我希望能够获取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操作的成功/失败状态?
答案 0 :(得分:1)
使用SQLiteDatabase的'replace'方法。 e.g。
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
答案 1 :(得分: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)