游标#getType()是索引超出界限

时间:2013-04-26 18:55:24

标签: android android-sqlite

基本上我有这个:

Cursor cur = ...
for (int i = 0; i < cur.getColumnCount(); i++) {
     String name = cur.getColumnName(i);
     Log.d("dao",name);
     int type = cur.getType(i);

...并且getType()调用上面的例外。 列名称记录正确。

  

错误AndroidRuntime引起的:   android.database.CursorIndexOutOfBoundsException:索引-1请求,   大小为0

1 个答案:

答案 0 :(得分:1)

这是SQLite数据库的一个功能,它使用动态类型。也请检查this。 你为什么不用:

Cursor cur = ...

if (cursor != null) {
    while (cursor.moveToNext()) {
        String name = cur.getColumnName(i);
        int type = cur.getType(i);
        ...
    }
}

这样,如果存在一行,则只询问类型。

如果您需要独立于任何结果的列类型,您可以使用:

String tableName = "...";
Cursor cursor = rawQuery("pragma table_info(" +tableName +")");
String type = getString(0);
String name = getString(1);

希望这有帮助......干杯!