【发布时间】:2014-11-19 04:38:26
【问题描述】:
我正在尝试查询 sqlite 数据库并将所选数据存储到二维数组中。
我的问题是在查询中插入“WHERE field='bordeaux'”会导致错误,“android.database.CursorIndexOutOfBoundsExeption:请求索引 1,大小为 1。” 没有它,查询和数组似乎运行良好。
另外,我发现当我删除“c.moveToNext();”时,带有“WHERE...”的查询只能显示一个合适的记录。从数组部分。
可以肯定的是,我的 sqlite 数据库包含与我的查询匹配的足够数据。
对不起,我的解释很糟糕,但我就是不明白原因。 你能告诉我为什么吗??
我的代码如下。
公共字符串[][] 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;
}
【问题讨论】:
-
您为什么在查询中包含(并检索)
field?您已经知道它的价值 (bordeaux)。我不会把 ; 放在这里:if(c.moveToFirst());{。在我看来,} 太多了。
标签: android arrays sqlite 2d querying