我想查詢sqlite數據庫並將選定的數據存儲到2d數組中。查詢sqlite數據庫並將選定的數據存儲到2d數組
我的問題是插入「WHERE字段='bordeaux'」到查詢導致錯誤,「android.database.CursorIndexOutOfBoundsExeption:索引1請求,大小爲1」。 沒有它,查詢和數組看起來工作得很好。
此外,我發現查詢「WHERE ...」只能刪除「c.moveToNext();」時只顯示一個適當的記錄。來自陣列部分。
可以肯定,我的sqlite數據庫包含足夠的數據匹配我的查詢。
對不起,我的不好解釋,但我只是不明白原因。 你能告訴我爲什麼?
我的代碼如下。
公衆的String [] [] onQuestion(){
mDbHelper = new MySQLHelper(this);
db = mDbHelper.getWritableDatabase();
Cursor c = db.rawQuery("SELECT field, question, choice1, choice2, choice3, choice4, answer FROM WineQuiz WHERE field= 'bordeaux' ORDER BY RANDOM() LIMIT 5", null);
if(c.moveToFirst());{
for (int ii = 0; ii < array.length; ii++) {
array[ii][0] = c.getString(c.getColumnIndex("field"));
array[ii][1] = c.getString(c.getColumnIndex("question"));
array[ii][2] = c.getString(c.getColumnIndex("choice1"));
array[ii][3] = c.getString(c.getColumnIndex("choice2"));
array[ii][4] = c.getString(c.getColumnIndex("choice3"));
array[ii][5] = c.getString(c.getColumnIndex("choice4"));
array[ii][6] = c.getString(c.getColumnIndex("answer"));
c.moveToNext();
}
db.close();
}
}
return array;
}
Whiy做你在查詢中包含(並檢索)'field'?你已經知道它的價值('bordeaux')。我不會把**; **放在這裏:'if(c.moveToFirst()); {'。而且在我看來,還有一個**太多了。 – 2014-09-24 15:44:30