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;

ただし、2番目のステートメントには、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 に答える