2012-10-25 101 views
-1

我有更新我的SQLite數據庫的問題,所以我將非常感謝,如果有人可以幫助我。我嘗試了每個可能的例子和教程,但沒有。在我的sqlite表中我有9個屬性,但我只需要更新三個。Xcode更新Sqlite記錄

const char *sql = "UPDATE studentNotes SET title = ? , note = ? , existingAudioNote = ? , audioNoteName = ? , audioNoteDuration = ? , existingPdf = ? , pdfFileName = ? WHERE id = ?"; 

if(sqlite3_open([[AppDelegate getDatabasePath]UTF8String], &database) == SQLITE_OK){ 

    if (sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK){ 
     NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); 
    } 
    else { 

     sqlite3_bind_text(updateStmt, 1, [noteTitle UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 2, [noteText UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 3, [noteExistingAudioNote UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 4, [noteAudioName UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 5, [audioNoteDuration UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 6, [existingPdf UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(updateStmt, 7, [pdfFileName UTF8String], -1, SQLITE_TRANSIENT); 
     if (SQLITE_DONE != sqlite3_step(updateStmt)){ 
      NSAssert1(0, @"Error while updating data. '%s'", sqlite3_errmsg(database)); 
     } 


     sqlite3_reset(updateStmt); 
    } 
} 
sqlite3_close(database); 

我試過這段代碼,但是當我從我的類調用這個方法到視圖,它不工作。有任何想法嗎 ?

+0

可能重複的[sqlite3更新不工作在ios](http://stackoverflow.com/questions/12439751/sqlite3-update-not-working-in-ios)等等,無法想象爲什麼它是在發佈之前很難做一個Google搜索...... – 2012-10-25 19:46:32

+0

你能比「不工作」更具體嗎? –

+0

當我嘗試更新記錄時,它不執行任何操作。沒有出現錯誤。它唯一要做的就是再次錄製相同的記錄。我在addObject的appdelegate中發現了這個問題:。我甚至用Coffe教程試過,但沒有任何結果。唯一的想法是,我沒有得到它的身份證。 – dsafa

回答

1

你的UPDATE命令有8個參數,但你只設置了前7個。 最後一個參數還是有它的默認值,這意味着什麼得到執行的是:

UPDATE ... WHERE id = NULL 

這不符合任何記錄(因爲NULL不能=進行比較)。

+0

我會嘗試編輯更新聲明,但是能否告訴我調用方法的最佳位置是什麼?直接在按鈕上或?因爲我在AppDelegate中創建 - (void)updateRecord:(NotesMainClass *)notesObject {[notesObject updateData]; [notesDatabase addObject:notesObject]; – dsafa