无法使用Cursor更新Sqlite数据库并调用onClickListener

时间:2017-08-11 11:00:12

标签: android sqlite sql-update android-sqlite

这是DatabaseHelper上的方法光标;

public Cursor updateNewQuiz(int n, String s) {
    return getWritableDatabase().rawQuery("UPDATE tb_characters SET LOCKED = '" + s + "' WHERE ID = '" + n + "'", null);
}

 public Cursor updateThisQuiz(int n) {
    return getWritableDatabase().rawQuery("UPDATE tb_characters SET ANSWERED = '1' WHERE ID = '" + n + "'", null);
}

而且,我正在像这样在Acticity中调用OnClickLIstener

int nn = Integer.parseInt(resultes0);
int s = Integer.parseInt(resultes0);
Cursor cursor = myDb.updateNewQuiz(nn+1,"1");
Cursor cursor1 = myDb.updateThisQuiz(s);

但是,我的数据库仍然没有更新...

请帮助我......

1 个答案:

答案 0 :(得分:1)

documentation说:

  

通过将字符串括在单引号(')中来形成字符串常量。

所以... WHERE ID = '" + n + "' ...搜索一个字符串作为ID的行。没有这样的行,所以没有更新。

在SQL中,您必须编写没有引号的数字:

... WHERE ID = " + n + " ...

此外,您必须使用execSQL()来执行非SELECT查询的语句。

最好使用update()代替:

ContentValues cv = new ContentValues();
cv.put("LOCKED", 1);
db.update("tb_characters", cv, "ID = " + n, null);