无法从CursorWindow读取第0行第1列

时间:2015-02-04 14:47:06

标签: android android-cursor

我正在尝试以最简单的方式获取我的数据库所拥有的条目数。

我正在尝试使用rawQuery“SELECT Count(*) FROM Students”然后从游标中执行getInt方法来获取数字并稍后使用它。

这是我的方法

public int getNumberOfEntries() {
        SQLiteDatabase db = helper.getWritableDatabase();
        String query = ShaqedDB.NUMBER_OF_ENTRIES;
        Cursor d = db.rawQuery(query, null);
        d.moveToFirst();
        while (!d.isAfterLast()) {
           int numberReturned = d.getInt(0);
           d.moveToNext();
           return numberReturned;
        }
        return 0;
}

我到处寻找 - 我无法找到解决方案为什么我一直得到光标错误,光标无法读取第0行,第1列...即使我认为我将其指向col 0

1 个答案:

答案 0 :(得分:0)

如果您不需要写,则应使用getReadableDatabase();代替getWritableDatabase();。在

d.getInt(0);

0是您要检索值的列的索引。不要硬编码值。让光标检索列索引

   d.getInt(d.getColumnIndexOrThrow("COLUMN_NAME"));

关于您的查询,您现在想要查询返回的结果数。您可以检索此值,询问光标的计数:

 public int getNumberOfEntries() {
        SQLiteDatabase db = helper.getReadableDatabase();
        String query = ShaqedDB.NUMBER_OF_ENTRIES;
        Cursor d = db.rawQuery(query, null);   
        return d.getCount();
}