我在从表中获取不同的值时遇到问题。我创建了一个返回字符串数组的方法,如下所示:

    public String[] getUniversityNames() {
    String[] university = new String[0];
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(true, TABLE_QUESTIONS,
            new String[] { KEY_UNIVERSITY }, null, null, null, null, null,
            null);

    int i = 0;
    if (cursor.moveToFirst()) {
        do {
            university[i] = cursor.getString(0); //Error occurs here @ Line 119
            i++;
        } while (cursor.moveToNext());
    } else {
        Log.w("AQUEST", "No Data Found.");
    }
    cursor.close();
    return university;
}


并给我在logcat中的以下错误:

E/AndroidRuntime(11100): FATAL EXCEPTION: main
E/AndroidRuntime(11100): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
E/AndroidRuntime(11100): at     com.anisTronic.quest.database.DatabaseHandler.getUniversityNames(DatabaseHandler.java:119)


我的桌子上有19行。

请帮助我。我感谢您的帮助。

最佳答案

您的错误可能是:

String[] university = new String[0];


...

university是具有0个元素的数组。

然后:

university[i] = cursor.getString(0); //Error occurs here @ Line 119


您尝试添加一个元素。您不能,因为university无法保存元素,因此是异常。您可以返回某种Collection或将其收集到Collection中,然后再将其更改为数组。

10-08 03:11