在我的iPhone应用程序中,我已经包含了两列的sqlite数据库。结构如,
CREATE TABLE "MyTable" ("ID" INTEGER PRIMARY KEY NOT NULL ,"name" VARCHAR,"status" INTEGER)
我正在尝试通过编程动态更新第二列“状态”。我正在尝试使用以下查询。
const char *updateStmt = "UPDATE MyTable SET name=?, status=? Where ID=?";
和
sqlite3_stmt *addstateCompiledStmt;
if ( sqlite3_prepare_v2(database, updateStmt, -1, &addstateCompiledStmt, NULL) ==SQLITE_OK )
{
sqlite3_bind_int(addstateCompiledStmt, 2, statusvalue);
}
但它没有通过新值传递到第二列。有人可以帮我解决这里可能出错的问题以及需要做些什么吗?
谢谢。
答案 0 :(得分:1)
你需要绑定所有“?” sqlite语句中的值。
请参阅链接以供参考 http://staging.icodeblog.com/wp-content/uploads/2008/09/dehydrate1.png http://www.scribd.com/doc/11524402/iPhone-Programming-with-SQLite
,或者
if (updateStmt == nil) {
const char *sql = "update Coffee Set CoffeeName = ?, Price = ? Where CoffeeID = ?";
if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(updateStmt, 1, [coffeeName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_double(updateStmt, 2, [price doubleValue]);
sqlite3_bind_int(updateStmt, 3, coffeeID);
if(SQLITE_DONE != sqlite3_step(updateStmt))
NSAssert1(0, @"Error while updating. '%s'", sqlite3_errmsg(database));
sqlite3_reset(updateStmt);