Ios SQLITE更新表问题
我是Sqlite新手,正在开发一个使用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
-(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;
是否有任何错误发生?是的,更新失败。你能分享完整的错误信息吗?我更新了问题中的错误