数据库更新行如何操作-Android

数据库更新行如何操作-Android,android,database,Android,Database,如果您查看底部的代码,我有一个列为“used”的数据库。如果它是1,则表示它尚未被使用,当它被使用时,将其设置为将数字更新为0。但当所有行都使用了数字0时,我想在所有行中再次将used从0更新为1 我想用这个: db.execSQL("UPDATE vprasanja SET used=1 WHERE kategorija=" + kategorija4 + ";"); 但是我应该把它放在我的代码中的什么地方呢?我应该补充点什么吗?这是正确的代码吗 public void set(){

如果您查看底部的代码,我有一个列为“used”的数据库。如果它是1,则表示它尚未被使用,当它被使用时,将其设置为将数字更新为0。但当所有行都使用了数字0时,我想在所有行中再次将used从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;

    }

}

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

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

if(cd.moveToFirst()){
你应该使用

if(cd.getCount() != 0){
然后添加一个else

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

工作得很有魅力!非常感谢。