这是我在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
答案 0 :(得分:0)
这是因为您的查询只返回了1列(round
)且索引从零开始
请参阅有关getString
的文档以String形式返回所请求列的值。结果和 当列值为null时,此方法是否抛出异常 或者列类型不是字符串类型是实现定义的。 参数
columnIndex 目标列的从零开始的索引。
以下应该有效:
result.add(cursor.getString(0));
答案 1 :(得分:0)
我认为它应该是cursor.getString(0)
,因为它是一个基于0的索引。