数据库更新行如何操作-Android
如果您查看底部的代码,我有一个列为“used”的数据库。如果它是1,则表示它尚未被使用,当它被使用时,将其设置为将数字更新为0。但当所有行都使用了数字0时,我想在所有行中再次将used从0更新为1 我想用这个:数据库更新行如何操作-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(){
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 + ";");
}
工作得很有魅力!非常感谢。