Xcode更新Sqlite记录

时间:2012-10-25 19:38:17

标签: ipad sqlite sql-update

我有更新我的sqlite数据库的问题,所以如果有人能帮助我,我将非常感激。我尝试了每个可能的示例和教程,但没有。在我的sqlite表中我有9个属性,但我只需要更新三个。

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

我尝试使用此代码,但是当我从我的类调用此方法到视图时,它不起作用。有任何想法吗 ?

1 个答案:

答案 0 :(得分:1)

您的UPDATE命令有八个参数,但您只设置了前七个参数。 最后一个参数仍然有其默认值,这意味着执行的是:

UPDATE ... WHERE id = NULL

与任何记录都不匹配(因为NULL无法与=进行比较)。