Ошибка java.lang.IllegalStateException в Android Sqlite3 «группировать по» - PullRequest
0 голосов
/ 09 октября 2011

Это мой запрос в sqlite3 от оболочки adb:

sqlite> SELECT round FROM prizes GROUP BY round;
100-7

Однако у меня возникла проблема при переводе его в код Java:

LinkedList<String> result = new LinkedList<String>();
Cursor cursor = db.rawQuery("SELECT round FROM prizes GROUP BY round", null);
if(cursor.moveToFirst()) {
    do {
        result.add(cursor.getString(1));
    } while (cursor.moveToLast());
}
if (cursor != null && !cursor.isClosed())
    cursor.close();

return (String[]) result.toArray();

При запуске этого кодаЯ получил ошибку:

ERROR/AndroidRuntime(10540): java.lang.IllegalStateException: get field slot from row 0 col 1 failed

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Я полагаю, что это должно быть cursor.getString(0), поскольку это индекс на основе 0.

0 голосов
/ 09 октября 2011

Это связано с тем, что по вашему запросу возвращается только 1 столбец (round), а индекс начинается с нуля

См. Документ о getString

Возвращает значение запрошенного столбца в виде строки.Результат и то, вызывает ли этот метод исключение, когда значение столбца равно нулю или тип столбца не является строковым типом, определяется реализацией.Параметры

columnIndex индекс на основе нуля целевого столбца.

Должно работать ниже:

  result.add(cursor.getString(0));
...