Android の SQLite で準備済みステートメントを使用するにはどうすればよいですか?
J. Pablo Fernández
質問する
97889 次
5 に答える
24
私は常に Android で準備済みステートメントを使用していますが、それは非常に簡単です。
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("INSERT INTO Country (code) VALUES (?)");
stmt.bindString(1, "US");
stmt.executeInsert();
于 2009-01-12T17:12:21.640 に答える
23
戻り時にカーソルが必要な場合は、次のようなものを検討できます。
SQLiteDatabase db = dbHelper.getWritableDatabase();
public Cursor fetchByCountryCode(String strCountryCode)
{
/**
* SELECT * FROM Country
* WHERE code = US
*/
return cursor = db.query(true,
"Country", /**< Table name. */
null, /**< All the fields that you want the
cursor to contain; null means all.*/
"code=?", /**< WHERE statement without the WHERE clause. */
new String[] { strCountryCode }, /**< Selection arguments. */
null, null, null, null);
}
/** Fill a cursor with the results. */
Cursor c = fetchByCountryCode("US");
/** Retrieve data from the fields. */
String strCountryCode = c.getString(cursor.getColumnIndex("code"));
/** Assuming that you have a field/column with the name "country_name" */
String strCountryName = c.getString(cursor.getColumnIndex("country_name"));
より完全なものが必要な場合は、このスニペットGenscriptsを参照してください。これはパラメーター化された SQL クエリであるため、本質的には準備済みステートメントであることに注意してください。
于 2010-09-03T14:55:40.830 に答える
9
jasonhudgins の例は機能しません。stmt.execute()
でクエリを実行して値 (または ) を取得することはできませんCursor
。
プリコンパイルできるのは、行をまったく返さないステートメント (insert や create table ステートメントなど)、または単一の行と列を返すステートメント (およびsimpleQueryForLong()
orを使用するステートメントsimpleQueryForString()
) のみです。
于 2010-06-06T09:15:24.650 に答える
1
カーソルを取得するために、compiledStatement を使用することはできません。ただし、完全に準備された SQL ステートメントを使用する場合は、jbaez の方法を適用することをお勧めします... のdb.rawQuery()
代わりに を使用しdb.query()
ます。
于 2010-10-14T18:58:00.150 に答える