我想查询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