我在移动/设备上启动应用程序时收到“请求索引0,大小为0”。 我打电话时确保光标不是'空'。 我发现了一些类似的问题并且在我的场景中感到厌倦但是没有用。
我有这段代码:
SQLiteDatabase db = mDbHelper.getReadableDatabase();
Cursor resultSet=db.rawQuery("select * from NoteTable", null);
String[] values = new String[resultSet.getCount()];
if (resultSet != null && resultSet.moveToNext());
{
do {
if (resultSet != null) {
values[i] = resultSet.getString(resultSet.getColumnIndex("noteTitle"));
i++;
}
}while (resultSet.moveToNext());
resultSet.close();
}
db.close();
return values;
我得到以下例外:
09-24 15:28:23.845 25800-25800 / com.example.ashv.actionbar W / System.err:java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.ashv.actionbar / com.example.ashv .actionbar.MyActivity}:android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0
答案 0 :(得分:1)
您应首先使用Cursor
移至moveToFirst()
的第一条记录,例如
if (resultSet != null && resultSet.moveToFirst());
{
do {
if (resultSet != null) {
values[i] = resultSet.getString(resultSet.getColumnIndex("noteTitle"));
i++;
}
}while (resultSet.moveToNext());
resultSet.close();
}
答案 1 :(得分:0)
我上面提到的代码中没有问题(当然在Manish更正之后)。
我发现在我的应用程序中,我使用的是“App抽屉”。 '应用程序抽屉'代码检查列表中显示的所有内容以及应该来自数据库的所有内容(即使用此代码。从数据库中读取)。这给了我错误“请求索引0,大小为0”。这是指App drwaer值。我删除了应用程序抽屉部分,这个代码工作正常(即我的应用程序没有崩溃,也没有例外)。我需要找到动态'App抽屉'的解决方案(这将是不同的故事)。
如果您想知道您的代码有什么问题,我刚才提到了这一点。那么您可能需要查看应用程序的其他部分/模块。
答案 2 :(得分:0)
您应该首先在resultSet上调用moveToNext方法
while(resultSet.moveToNext){
if(resultSet != null) {
values[i] = resultSet.getString(resultSet.getColumnIndex("noteTitle"));
}
}
resultSet.close()
有关从sqlite数据库https://developer.android.com/training/data-storage/sqlite读取的详细信息