Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SQLITE更新表问题_Ios_Sqlite - Fatal编程技术网

Ios SQLITE更新表问题

Ios SQLITE更新表问题,ios,sqlite,Ios,Sqlite,我是Sqlite新手,正在开发一个使用Sqlite的应用程序 我已经成功地创建了表并将值插入其中 我正在尝试更新该表,但该表未得到更新 以下是更新表的代码: -(BOOL)updateData:(NSString *)screenName status:(NSString *)currentStatus{ const char *dbPath = [databasePath UTF8String]; if (sqlite3_open (dbPath, &dat

我是Sqlite新手,正在开发一个使用Sqlite的应用程序

我已经成功地创建了表并将值插入其中

我正在尝试更新该表,但该表未得到更新

以下是更新表的代码:

    -(BOOL)updateData:(NSString *)screenName status:(NSString *)currentStatus{

    const char *dbPath = [databasePath UTF8String];

    if (sqlite3_open (dbPath, &database) == SQLITE_OK) {

        NSString *updateSQL = [NSString stringWithFormat:@"Update productDetail Set status = \"%@\" where current_screen = \"%@\"",currentStatus,screenName];

//        const char *update_stmt = "update productDetail Set status = ? Where screenName=?";

        const char *update_stmt = [updateSQL UTF8String];

        /*
        if (sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL)) {

            sqlite3_bind_text(statement, 0, [currentStatus UTF8String], -1, SQLITE_TRANSIENT);
            sqlite3_bind_text(statement, 2, [screenName UTF8String], -1, SQLITE_TRANSIENT);
        }
         */


        /*
        char* errmsg;
        sqlite3_exec(database, "COMMIT", NULL, NULL, &errmsg);
        */

        sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL);

        /*
        sqlite3_bind_text(statement, 1, [currentStatus UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(statement, 3, [screenName UTF8String], -1, SQLITE_TRANSIENT);
        */

        if (sqlite3_step(statement) == SQLITE_OK) {
            NSLog(@"Updated Successfully!!");
            return YES;
        }
        else{

            NSLog(@"error: %s",sqlite3_errmsg(database));
            NSLog(@"Failed Updated");
        }

        int result=sqlite3_bind_text(statement, 1, Nil , -1, SQLITE_TRANSIENT);
        NSLog(@"bind result= %i", result);

        if(sqlite3_step(statement) != SQLITE_DONE) {
            NSLog(@"Problems updating");
            NSLog(@"error: %s",sqlite3_errmsg(database));
            return NO;
        }
        else{
            NSLog(@"Updated");
        }
        sqlite3_finalize(statement);
    }
    return YES;

    }
请让我知道我做错了什么

谢谢

错误:

更新失败 绑定结果=21 更新问题
错误:库例程被无序调用

您有太多注释掉的代码,剩余的代码因此被篡改

代码尝试绑定参数,但当前查询不使用参数。 此外,
sqlite3\u step
的返回值永远不能是
SQLITE\u OK
,并且您尝试执行查询两次(并且数据库抱怨,因为您没有调用)

使用此代码:

result = NO;
const char *update_stmt = "UPDATE productDetail SET status=? WHERE screenName=?";
if (sqlite3_prepare_v2(database, update_stmt, -1, &statement, NULL) != SQLITE_OK) {
    NSLog(@"prepare error: %s", sqlite3_errmsg(database));
} else {
    sqlite3_bind_text(statement, 1, [currentStatus UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(statement, 2, [screenName UTF8String], -1, SQLITE_TRANSIENT);
    if (sqlite3_step(statement) != SQLITE_DONE)
        NSLog(@"execution error: %s", sqlite3_errmsg(database));
    else
        result = YES;
    sqlite3_finalize(statement);
}
return result;

是否有任何错误发生?是的,更新失败。你能分享完整的错误信息吗?我更新了问题中的错误