2

我的 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 字符串。告诉我这可能吗?如果可以,怎么做?

4

2 回答 2

4

是的,您可以使用以下参数化查询:-

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
}

您的参数化代码已准备就绪。

于 2013-03-16T18:49:49.903 回答
3

你要

update field set name = ?, type = ?, state = ? where id = 5
于 2013-03-16T18:44:28.503 回答