0

ContentValues オブジェクトを取得して、それを sqlite ステートメントで使用できるようにしたいと考えています。

ContentValues cv;
cv.put( "id", 1 );
cv.put( "name", "Bob" );
cv.put( "isCEO", true );

通常、リクエストを次のようにハードコーディングします。

db.execSQL( "Insert or replace into Employee (id, name, isCEO) values (1, 'Bob', true)" );

cv を文字列 "(id, name, isCEO) values (1, 'Bob', true)" に変換する最良の方法は何ですか? また、この場合、sqlite 操作の成功/失敗ステータスを取得する方法はありますか?

4

2 に答える 2

1

SQLiteDatabase の「replace」メソッドを使用します。例えば

ContentValues cv;
cv.put( "id", 1 );
cv.put( "name", "Bob" );
cv.put( "isCEO", true );
db.replace(TABLE_NAME, null, cv);

これが機能するには、「id」列がテーブルの PRIMARY キー列である必要があります。

「replace」メソッドの応答は長い値です:

the row ID of the newly inserted row, or -1 if an error occurred 
于 2012-07-14T18:14:40.157 に答える
0

ContentValuesを文字列に変換する代わりに、フレームワークに変換させてください。

db.insertWitOnConflict( "Employee"、null、cv、CONFLICT_REPLACE);

詳細については、次を参照してください。

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertWithOnConflict(java.lang.String、java.lang.String、android.content.ContentValues、int

于 2012-07-14T18:27:07.860 に答える