Android Sqlite3“group by”子句中的java.lang.IllegalStateException错误

时间:2011-10-09 15:57:38

标签: android sqlite group-by cursor

这是我在sqlite3中通过adb shell查询:

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 :(得分:0)

这是因为您的查询只返回了1列(round)且索引从零开始

请参阅有关getString

的文档
  

以String形式返回所请求列的值。结果和   当列值为null时,此方法是否抛出异常   或者列类型不是字符串类型是实现定义的。   参数

     

columnIndex 目标列的从零开始的索引。

以下应该有效:

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

答案 1 :(得分:0)

我认为它应该是cursor.getString(0),因为它是一个基于0的索引。