如果你查看我底部的代码,我的数据库中有'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;
}
}
答案 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 + ";");
}