我正在尝试为我的测验应用程序加载一个带有游标结果的数据库列。这样做的原因是我想用每个类别中的问题填充列表视图,所以我设置了这个:
public void putValues(){
for (int i = 0; i < 18; i++) {
Cursor contentCursor = null;
contentCursor = mDB
.rawQuery("select count(*) from questions_en where used = 0 and category" + " = " + i, null);
if(contentCursor.getCount() >0 )
contentCursor.moveToFirst();
if (contentCursor.isAfterLast()) {
contentCursor.close();
mDB.close();
return;
}
int contentCursorInt = contentCursor.getInt(0);
Cursor upateCursor = null;
upateCursor = mDB.rawQuery("update categories_en set questions_count" + " = " + contentCursorInt + " where " + "_id" + " = " + i, null);
upateCursor.moveToNext();
upateCursor.close();
contentCursor.close();
}
}
因此,当用户点击一个答案(在问题屏幕上)使用变为 1(或任何非零值)时,查询结果会发生变化。上面的代码第一次运行良好。因为我还没有设置问题屏幕,所以我添加了这个查询:
public void test(){
Cursor cus = mDB.rawQuery("update questions_en set used = 1 where category = 2 and _id = 146", null);
cus.close();
}
到我的数据库适配器,然后从我的 MainActivty 调用此方法
@Override
public void onClick(View v) {
TestAdapter mTest = new TestAdapter(MainActivity.this);
mTest.createDatabase();
mTest.open();
mTest.test();
Log.d(DBHelper.TAG, " Worked ");
mTest.close();
}
});
但是,当我单击它并转到我的 ListActivity 时,我预计类别 2 的值会发生变化,因为查询刚刚再次执行。但它并没有减少。我从 DDMS(文件资源管理器)中取出了我的数据库,我发现对 _id = 146 的查询实际上并没有改变为 1。关于可能是什么原因的任何帮助?