2012-10-25 6 views
-1

У меня проблема с обновлением базы данных sqlite, поэтому я был бы очень благодарен, если бы кто-нибудь мог мне помочь. Я пробовал с каждым возможным примером и учебником, но ничего. В моей таблице sqlite у меня есть 9 атрибутов, но мне нужно обновить только три.Xcode Update Sqlite Record

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 до публикации ... –

+0

Не могли бы вы быть более конкретными, чем «не работает»? –

+0

Когда я пытаюсь обновить запись, она ничего не делает. Ошибок не обнаружено. Единственное, что он делает, это запись той же записи снова. Я нашел эту проблему в appdelegate в addObject:. Я пробовал даже с учебником Coffe, но ничего. Единственное, что видит, это то, что я не получаю его id. – dsafa

ответ

1

Ваша команда UPDATE имеет восемь параметров, но вы установите только первые семь. Последний параметр по-прежнему имеет значение по умолчанию, что означает, что запускается на выполнение является:

UPDATE ... WHERE id = NULL 

, который не соответствует ни одной записи (потому что NULL нельзя сравнивать с =).

+0

Я попытаюсь отредактировать заявление об обновлении, но можете ли вы рассказать мне, что является лучшим местом для вызова методов? Непосредственно на кнопке или? Потому что я создал в AppDelegate - (void) updateRecord: (NotesMainClass *) notesObject {[notesObject updateData]; [notesDatabase addObject: notesObject]; – dsafa