-1

sqlite データベースの更新に問題があるので、誰か助けていただければ幸いです。考えられるすべての例とチュートリアルを試しましたが、何もしませんでした。私のsqliteテーブルには9つの属性がありますが、更新する必要があるのは3つだけです。

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);

このコードを試してみましたが、このメソッドをクラスからビューに呼び出すと、機能しません。何か案は ?

4

1 に答える 1

1

コマンドUPDATEには 8 つのパラメーターがありますが、最初の 7 つだけを設定します。最後のパラメータはデフォルト値のままです。つまり、実行されるのは次のとおりです。

UPDATE ... WHERE id = NULL

どのレコードとも一致しません (NULLと比較できないため=)。

于 2012-10-26T06:49:59.080 に答える