insertWithOnConflict使Columns为null

时间:2015-04-11 07:57:32

标签: android sqlite

我有以下代码来更新或插入数据库,其中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 ..帮助

1 个答案:

答案 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) });