2011-11-04 91 views
-1

我正在做一個應用程序,我想要使用更新查詢?如何更新Sqlite最後在iphone中插入行ID?

在我的應用我有兩個階段來完成註冊程序,第1頁

我有登記表和一個提交按鈕?

點擊提交按鈕所有的細節應該插入到我的sqlite表。

in page2我有確認頁面和一個編輯並繼續按鈕?

保存在表格中的所有值應由用戶在此頁面上查看,如果他想要做出任何更改,他應該可以做到這一點。一旦用戶編輯了一些值,然後按繼續按鈕,所有的值插入應該更新?

但我嘗試這樣做,但我無法更新最後的輸入值?

下面是我的代碼第1頁插入代碼:

-(void)submit 

{ 

if(([UserName.text isEqualToString:@""]) || ([Password.text isEqualToString:@""]) || 

([ConfirmPassword.text isEqualToString:@""]) || ([Name.text isEqualToString:@""]) || 

([Email.text isEqualToString:@""]) || ([ContactNO.text isEqualToString:@""]) || 

([MobileNo.text isEqualToString:@""]) || ([Address.text isEqualToString:@""])) 

{ 

    UIAlertView *ErrorAlert = [[UIAlertView alloc] initWithTitle:@"Error!!" 
                  message:@"Please fill in the details." delegate:nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil, nil]; 
     [ErrorAlert show]; 
     [ErrorAlert release]; 
    } 
    else 
    { 
     Confirmation_form *conForm = [[Confirmation_form alloc] initWithNibName:@"Confirmation_form" bundle:nil]; 
     conForm.data = UserName.text; 
     conForm.data1 = Password.text; 
     conForm.data2 = ConfirmPassword.text; 
     conForm.data3 = Name.text; 
     conForm.data4 = Email.text; 
     conForm.data5 = ContactNO.text; 
     conForm.data6 = MobileNo.text; 
     conForm.data7 = Address.text; 


     sqlite3_stmt *statement; 
     const char *dbpath = [databasePath UTF8String]; 
     if (sqlite3_open(dbpath, &test1DB) == SQLITE_OK) 
     { 



      NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO test(UserName, Password, ConfirmPassword, Name, Email, ContactNO, MobileNo, Address) VALUES (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\")",UserName.text, Password.text, ConfirmPassword.text, Name.text, Email.text, ContactNO.text, MobileNo.text, Address.text]; 
      const char *insert_stmt = [insertSQL UTF8String]; 
      sqlite3_prepare_v2(test1DB, insert_stmt, -1, &statement, NULL); 
      if(sqlite3_step(statement) == SQLITE_DONE) 
      { 
       //status.text = @"Contact added"; 
       UserName.text = @""; 
       Password.text = @""; 
       ConfirmPassword.text = @""; 
       Name.text = @""; 
       Email.text = @""; 
       ContactNO.text = @""; 
       MobileNo.text = @""; 
       Address.text = @""; 


       sqlite3_last_insert_rowid; 
       rowID = sqlite3_last_insert_rowid(test1DB); 
       NSLog(@"last inserted rowId = %d",rowID); 

       sqlite3_reset(statement); 
       sqlite3_finalize(statement); 
       sqlite3_close(test1DB); 


       [self.navigationController pushViewController:conForm animated:YES]; 

      }     
     } 


    } 
} 

從上面的代碼,我能夠獲得該行的ID,但我不能夠使用ROWID更新詢問

以下是我的代碼頁2更新代碼:

-(IBAction)Update; 

{ 

sqlite3_stmt *statement; 

const char *dbpath = [databasePath UTF8String]; 

if (sqlite3_open(dbpath, &test1DB) == SQLITE_OK) 

{ 


NSString *insertSQL = [NSString stringWithFormat:@"UPDATE test SET   UserName='%@',Password='%@',ConfirmPassword='%@',Name='%@',Email='%@',ContactNO='%@',MobileNO='%@',Address='%@'WHERE ID='%@'",UserName.text,Password.text,ConfirmPassword.text, Name.text, Email.text, ContactNO.text, MobileNo.text, Address.text, sqlite3_last_insert_rowid(test1DB)]; 

const char *insert_stmt = [insertSQL UTF8String]; 
sqlite3_prepare_v2(test1DB, insert_stmt, -1, &statement, NULL); 
if(sqlite3_step(statement) == SQLITE_DONE) 
{ 
    sqlite3_step(statement); 
          UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record added" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
           [alert show]; 
           [alert release]; 
           alert = nil;  
    sqlite3_finalize(statement); 
    sqlite3_close(test1DB); 
} 

else { 
    sqlite3_step(statement); 
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"UIAlertView" message:@"Record notadded" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
        [alert show]; 
        [alert release]; 
        alert = nil;  
    } 
} 
+0

是你的rowID變量在同一個類中全局聲明和更新動作? –

+0

變量rowid是全局聲明,但更新操作是在另一個視圖或頁面 –

回答

0

簡單的方法 - >創建「someconstant.h」文件在那裏聲明你的_rowID變量。

將文件導入到您的課堂中,在第一課堂中指定您的價值並在第二課堂中使用它。

+0

我不想爲此創建任何新頁面....我想嘗試解釋是.....我得到了last_insert_rowid在第1頁是我使用插入查詢.....但現在我想在其他頁面中使用該rowid值,並希望引發更新查詢.....我想做這個東西jst一次,所以不需要greating一個新的頁面來存儲varibale ..........所以請幫忙 –

相關問題