我有以下代码来更新或插入数据库,其中q_id是我的主键
public long updateResponse(int response, int q_id) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
long id = 0;
contentValues.put(VivzHelper.Q_ID, q_id);
contentValues.put(VivzHelper.QUESTION_RESPONSE, response);
id = db.insertWithOnConflict(VivzHelper.TABLE_QUESTION_TEXT, null, contentValues, SQLiteDatabase.CONFLICT_REPLACE);
if(id==-1)
Log.d("failed", "failed"+response);
else
Log.d("success","success"+response);
return id;
}
上面的代码是更新/插入QUESTION_RESPONSE,但是在该行中将该行中的所有其他列设为null ..帮助
答案 0 :(得分:0)
上面的代码是更新/插入QUESTION_RESPONSE,但是将该行中的所有其他列设为null
"替换"冲突解决确实。如果插入会导致冲突,则首先删除冲突的行,然后才插入新行。 NULL
是列的默认默认值。
如果您需要在行中保留其他列数据,请使用UPDATE
查询。例如,要将响应列更新为具有指定标识的行:
contentValues.put(VivzHelper.QUESTION_RESPONSE, response);
db.update(VivzHelper.TABLE_QUESTION_TEXT, contentValues,
VivzHelper.Q_ID + "=?", new String[] { String.valueOf(q_id) });