2013-09-27 110 views
0

我有下面的代碼在按鈕上,當點擊更新基於id值jobNumber字段。我無法理解爲什麼數據庫沒有得到更新。我將不勝感激,如果有人可以幫助我在這裏:sqlite更新 - 問題

什麼似乎失蹤?提前致謝。 Documents目錄有777個權限,所以db文件。

代碼:

-(IBAction)saveJob:(id)sender 
    { 
    sqlite3_stmt *statement = NULL; 
    const char *sql1 ="UPDATE JOB SET JOBTITLE =?, COMPANY=?, ADDRESS =?, PHONE=?  WHERE jobNumber=?"; 


    sqlite3_prepare_v2(db, sql1, -1, &statement, NULL); 
    sqlite3_bind_text(statement, 1,[self.jobTitle.text UTF8String], -1, SQLITE_STATIC); 
    sqlite3_bind_text(statement, 2,[self.Company.text UTF8String], -1, SQLITE_STATIC); 
    sqlite3_bind_text(statement, 3,[self.Address.text UTF8String], -1, SQLITE_STATIC); 
    sqlite3_bind_text(statement, 4,[self.phoneNumber.text UTF8String], -1, SQLITE_STATIC); 
    sqlite3_bind_int(statement, 5,[self.jobNumber.text intValue]); 
    sqlite3_exec(db, sql1, NULL, NULL, NULL); 
    sqlite3_exec(db, "COMMIT", NULL, NULL, NULL); 
    if(SQLITE_DONE != sqlite3_step(statement)) 
    { 
     NSLog(@"Error in updating data"); ====> Code always comes here. 
    } 
    sqlite3_finalize(statement); 
    sqlite3_close(db); 

我有插入行另一份聲明中,它的作品。但更新不

回答

0

必須檢查sqlite3_prepare_v2返回值:

if (sqlite3_prepare_v2(db, sql1, -1, &statement, NULL) != SQLITE_OK) 
{ 
    NSLog(@"error...: %s", sqlite3_errmsg(db)); 
    sqlite3_finalize(statement); 
    sqlite3_close(db); 
    return ...; 
} 

此外,你不應該在sql1打電話sqlite3_exec。 此外,必須執行COMMITsqlite3_finalize,如果您還沒有執行BEGIN是沒用的。 (您必須檢查sqlite3_exec也有錯誤。)

+0

謝謝。我會檢查並讓你知道它是如何發生的。 – user2539989