数据库更新行如何 - Android

时间:2015-02-25 19:57:02

标签: android database

如果你查看我底部的代码,我的数据库中有'used'列。如果它为1则表示它尚未被使用,当它被使用时,它设置为将数字更新为0.但是当所有行都使用数字0时,我想再次使用从0到1的更新所有的行。

我想用这个:

db.execSQL("UPDATE vprasanja SET used=1 WHERE kategorija=" + kategorija4 + ";");

但我的代码应放在哪里?我应该加点东西吗?它是正确的代码吗?

public void set(){
    SQLiteDatabase db;

    String vprasanje = "";

    db=openOrCreateDatabase("baza.db",MODE_PRIVATE, null);

    Cursor cd=db.rawQuery("SELECT * FROM vprasanja WHERE kategorija=" + kategorija4 + " AND used = 1 ORDER BY RANDOM() LIMIT 1", null);
    cd.moveToFirst();

    if(cd.moveToFirst()){

    vprasanje = cd.getString(cd.getColumnIndex("text"));

    //patch
    String id2 = (cd.getString(cd.getColumnIndex("id")));
    int idd2 = Integer.parseInt(id2);
    db.execSQL("UPDATE vprasanja SET used=0 WHERE id =" + idd2 + ";");


    beseda = (TextView) findViewById(R.id.textView3);
    beseda.setText("");
    beseda.setText(vprasanje);


    db.close();
    busy = 0;

    }

}

2 个答案:

答案 0 :(得分:0)

试试这个,我想它会对你有所帮助:

ContentValues args = new ContentValues();
args.put("used", 0);
db.update(TABLE_NAME, args, "id" + "='" + idd2 + "'", null) > 0;

答案 1 :(得分:0)

而不是

if(cd.moveToFirst()){

你应该使用

if(cd.getCount() != 0){

然后添加其他

//all values are used
else {
   db.execSQL("UPDATE vprasanja SET used=1 WHERE kategorija=" + kategorija4 + ";");
}