Code Bye

sqlite3更新数据库问题 SQL执行成功但数据库数据不改变

数据库打开 执行SQL一切正常 但是就是数据库的字段不更新 擦了!找了好久,求大神们看看!

  if ([self openDB]) {
            
            //char *errormsg;
            sqlite3_stmt *statement;//这相当一个容器,放转化OK的sql语句
            NSString *updateSql = [NSString stringWithFormat:@”UPDATE Character SET CH_IsLook = 1 WHERE id = %i”,studyId];
            const char *sql = [updateSql UTF8String];
            //sqlite3_exec(_database, “BEGIN TRANSACTION”, NULL, NULL, &errormsg);
            int success = sqlite3_prepare_v2(_database, sql, -1, &statement, NULL);
            
            if(success != SQLITE_OK){
                
                MyLog(@”更新数据库错误”);
                sqlite3_close(_database);
                return NO;
            }
            //sqlite3_bind_int(statement, 1, studyId);
            //执行SQL语句。这里是更新数据库
            success = sqlite3_step(statement);
            
            //sqlite3_exec(_database, “COMMIT”, NULL, NULL, &errormsg);
            
            //如果执行失败
            if (success == SQLITE_ERROR) {
                NSLog(@”Error: 更新数据库错误”);
                //关闭数据库
                sqlite3_close(_database);
                return NO;
            }
            //释放statement
            sqlite3_finalize(statement);
            //执行成功后依然要关闭数据库
            sqlite3_close(_database);
            return YES;
        }

打印出的SQL在数据库执行时可以的,是不是上面调用执行更新额方法不对???
2014-09-05 11:27:40.903[7836:60b] 0
(lldb) po sql
“UPDATE Character SET CH_IsLook = 1 WHERE id = 1”

返回的执行码是 101  我对了一下 是说SQL执行成功了啊

已解决!!

10分
求分

10分
能说一下,是哪个地方的问题吗? 是因为表名character  为sql 保留字的原因吗? 求解释
UPDATE [Character] SET CH_IsLook = 1 WHERE id = 1
引用 3 楼 zhanglei5415 的回复:

能说一下,是哪个地方的问题吗? 是因为表名character  为sql 保留字的原因吗? 求解释

UPDATE [Character] SET CH_IsLook = 1 WHERE id = 1

是数据库的原因

楼主怎么解决的
楼主怎么解决的?遇到同样的问题,求解

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明sqlite3更新数据库问题 SQL执行成功但数据库数据不改变