0

クイズ アプリのカーソル結果をデータベース列に読み込もうとしています。この理由は、リストビューに各カテゴリの質問を入力したいので、これを設定するためです:

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();
}

DB アダプターに接続し、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 の値が変更されていると予想されました。でも減りません。DB を DDMS (ファイル エクスプローラー) から取り出したところ、_id = 146 へのクエリが実際には 1 に変更されていないことがわかりました。原因について何か助けはありますか?

4

1 に答える 1