0

您好我正在使用更新语句来更新 sqlite 数据库中的记录。请帮助我的代码有什么问题。我不明白哪里错了。我正在使用下面的代码


sqlite3 *database;
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0];
        NSString *filePath = [documentsPath stringByAppendingPathComponent:@"Notes.sqlite"];
        sqlite3_stmt *updateStmt = nil;
        if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK)
        {
            const char *sql = [[NSString stringWithFormat:@"update Notess Set Name=? Where NoteId = %@",_notesId] UTF8String];

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

        }
        sqlite3_bind_text(updateStmt, 1, [textVew.text  UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_finalize(updateStmt);
        sqlite3_close(database);
4

1 回答 1

2

你没有sqlite3_step在你的sqlite3_bind_text陈述之后打电话。因此,您从未真正执行过 SQL。

因此,它应该看起来像:

sqlite3 *database;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"Notes.sqlite"];
sqlite3_stmt *updateStmt = nil;
if(sqlite3_open([filePath UTF8String], &database) == SQLITE_OK)
{
    const char *sql = [[NSString stringWithFormat:@"update Notess Set Name=? Where NoteId = %@",_notesId] UTF8String];

    if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK)
        NSLog(@"Error while creating update statement. %s", sqlite3_errmsg(database));

    if (sqlite3_bind_text(updateStmt, 1, [textVew.text  UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK)
        NSLog(@"Error while binding value. %s", sqlite3_errmsg(database));

    if (sqlite3_step(updateStmt) != SQLITE_DONE)
        NSLog(@"Error during step. %s", sqlite3_errmsg(database));

    sqlite3_finalize(updateStmt);
    sqlite3_close(database);
}else{
    NSLog(@"Error while opening database");
}
于 2013-09-17T12:13:49.523 回答