****请标记为不必要 - 问题不再与答案有关。****
我需要帮助更改SQLite数据库中的单个“单元格”。它是0,它需要是1.(是的,我使用整数作为bools)。我相信问题在于更新。
+ favStmt设置为nil。
+ gameID是主键列。
+ useGameID传入我想要更新的行的主键。
+ isFavorite是我要更新的列。
- (void) addFavorite:(NSInteger) useGameID{
if(favStmt==nil){
const char *sql = "update GameTable Set isFavorite = ? Where gameID=?";
if(sqlite3_prepare_v2(database, sql, -1, &favStmt, NULL) !=SQLITE_OK)
NSAssert1(0,@"Error while creating favorite stmt. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_int(favStmt, 1, 1);
sqlite3_bind_int(favStmt, 2, useGameID);
if (SQLITE_DONE != sqlite3_step(favStmt))
NSAssert1(0, @"Error while favoriting. '%s'", sqlite3_errmsg(database));
sqlite3_reset(favStmt);
}
我发现了一个类似的问题,但我无法理解我的目的。 Changing a value in SQLite3
谢谢你!
对于那些只说masochists使用直接SQLite的人,有两件事。一,是的,我是一个受虐狂。第二,我只需要最后一个语句,我应该使用直接SQLite。
答案 0 :(得分:1)
这是一个真正的答案,或者至少是一个更好的答案。
您的sqlite3_prepare_v2
,sqlite3_bind_int
,sqlite3_step
,sqlite3_reset
序列看起来是正确的,但我认为您给的是sqlite3_bind_int
错误的参数。 sqlite3_bind_int
的论据应该是:
所以我认为你的绑定应该是这样的:
sqlite3_bind_int(favStmt, 1, 4);
并且没有理由为偶尔使用低级接口道歉,有时候知道在所有常见的欢乐之下发生了什么是有用的。只是不要养成尝试用汇编程序编写所有东西的习惯,这样说:)