如何从SQLite中获取不同的值

时间:2014-02-11 02:53:32

标签: android sql sqlite

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

    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行。

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

2 个答案:

答案 0 :(得分:1)

您的错误可能是:

String[] university = new String[0];

...

university是一个包含0个元素的数组。

然后:

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

您尝试添加元素。你不能,因为university不能容纳一个元素,因此是例外。在将其更改为数组之前,您可以返回某种Collection或在Collection中收集它们。

答案 1 :(得分:0)

根据您的初始化university

,字符串数组String[] university = new String[0];为空

尝试使用ArrayList<String> http://developer.android.com/reference/java/util/ArrayList.html