加载数据库列,查询结果不起作用

时间:2013-11-02 14:42:03

标签: android cursor android-sqlite

我正在尝试使用我的测验应用的游标结果加载数据库列。这样做的原因是我想用每个类别中的问题填充列表视图,所以我设置了这个:

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.对原因可能有什么帮助?

1 个答案:

答案 0 :(得分:0)

this的帮助下解决问题。

我刚刚改变了这个:

public void test(){
    Cursor cus = mDB.rawQuery("update questions_en set used = 1 where category = 2 and _id = 146", null); 
    cus.close();
}

到这个

public void test(){
        int id = 3;
        ContentValues data = new ContentValues();
        data.put(DBHelper.KEY_USED, "1");
        mDB.update(DBHelper.KEY_QUESTIONS_TABLE, data, DBHelper.KEY_ID + " = " + id , null);
}