Android 运行应用程序时:获取错误“;请求索引0,大小为0“;

Android 运行应用程序时:获取错误“;请求索引0,大小为0“;,android,android-sqlite,Android,Android Sqlite,在移动设备上启动应用程序时,我收到“请求索引0,大小为0”。 我确保在调用时光标不为“Null”。 在我的场景中,我发现了一些类似的问题并感到疲惫,但不起作用 我有以下代码: SQLiteDatabase db = mDbHelper.getReadableDatabase(); Cursor resultSet=db.rawQuery("select * from NoteTable", null); String[] values = new

在移动设备上启动应用程序时,我收到“请求索引0,大小为0”。 我确保在调用时光标不为“Null”。 在我的场景中,我发现了一些类似的问题并感到疲惫,但不起作用

我有以下代码:

        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:无法启动activity ComponentInfo{com.example.ashv.actionbar/com.example.ashv.actionbar.MyActivity}:android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0

您应该首先使用
moveToFirst()
移动到
光标的第一条记录,如

  if (resultSet != null && resultSet.moveToFirst());
    {
        do {
            if (resultSet != null) {
                values[i] = resultSet.getString(resultSet.getColumnIndex("noteTitle"));
                i++;
            }
        }while (resultSet.moveToNext());
        resultSet.close();
    }

我上面提到的代码中没有问题(当然是在Manish更正之后)

我发现在我的应用程序中,我使用的是“应用程序抽屉”应用程序抽屉代码检查列表中要显示的所有内容以及所有应该来自数据库的内容(即使用此代码从数据库中读取)。这给了我错误“请求索引0,大小为0”。这是指应用程序drwaer值。我已删除应用程序抽屉部分,此代码工作正常(即,我的应用程序没有崩溃,也没有例外)。我需要找到解决方案的动态'应用程序抽屉'(这将是不同的故事)


我刚才提到这一点是因为如果你想知道你的代码出了什么问题。然后您可能需要查看应用程序的其他部分/模块。

您应该首先在结果集上调用moveToNext方法

while(resultSet.moveToNext){

 if(resultSet != null) {
                values[i] = resultSet.getString(resultSet.getColumnIndex("noteTitle"));
            }

}
resultSet.close()

有关从sqlite数据库读取的详细信息,请首先使用
resultSet.moveToFirst()
移动到光标的第一条记录。在遍历ResultSetThi Sagar Pilkhwal之前,我在IF条件之前添加了resultSet.moveToFirst()
,但它不起作用。我收到了同样的错误。嗨,M。谢谢你的快速回复。我没有看到你上面提到的代码和我的代码有什么不同。然而,正如你所建议的,我尝试了以下方法,在IF条件之前,但它不起作用。我也犯了同样的错误。resultSet.moveToNext();if(resultSet!=null&&resultSet.moveToNext();:)知道了。我的错。让我试试这个。我使用了以下命令,但仍然是相同的错误。请建议。if(resultSet!=null&&resultSet.moveToFirst());我尝试了很多方法,多次错误地编辑代码。我使用了moveToNext()而不是moveToFirst()。然而,这仍然不起作用。谢谢你的帮助。启动应用程序时出现错误。