我的iOS应用程序使用SQLite3数据库,到目前为止,我已成功设法创建表,插入值,然后再选择它们。
但是,现在我想更新。我试过这个:
UPDATE field WHERE _id = 5 (name,type,state) VALUES (?,?,?)
但SQLite告诉我WHERE附近存在语法错误
据我所知,SQLite可能不支持上面的语法,而是选择格式如下。
UPDATE field SET name= "Upper" type= "Pigs" state=1 WHERE _id = 5;
然而,在第二个语句中注意,没有(?,?,?)(我相信它被调用的参数化查询)用于动态地将值插入到SQL字符串中。告诉我这是可能的,如果是这样的话?
答案 0 :(得分:3)
你想要
update field set name = ?, type = ?, state = ? where id = 5
答案 1 :(得分:3)
是您可以使用参数化查询,如下所示: -
NSString *sqlString = @"UPDATE field SET name=?, type=?, state=? where _id=?";
sqlite3_stmt *stmt;
if(sqlite3_prepare(database, [sqlString UTF8String], -1, &stmt, NULL) != SQLITE_OK)
{
//Handle Error
}
if(sqlite3_bind_text(stmt, 1, [record.name UTF8String],[record.type UTF8String],[record.state UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK)
{
// Handle Error
}
if(sqlite3_bind_int(stmt, 2, record.key) != SQLITE_OK)
{
// Handle Error
}
if (sqlite3_step(statement) != SQLITE_DONE)
{
// Handle Error
}
您的参数化代码已准备就绪。