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)值(1,'Bob',true)”的最佳方法是什么?另外,在这种情况下,有没有办法恢复 sqlite 操作的成功/失败状态?

4

2 回答 2

1

使用 SQLiteDatabase 的“替换”方法。例如

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

为此,“id”列必须是表中的主键列。

'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("雇员", 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 回答