【问题标题】:Couldn't read row 0, col 1 from CursorWindow无法从 CursorWindow 读取第 0 行第 1 列
【发布时间】:2015-02-05 00:52:17
【问题描述】:

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

我正在尝试使用 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 列...即使我认为我将它指向第 0 列

【问题讨论】:

    标签: android android-cursor


    【解决方案1】:

    如果你不需要写,你应该使用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();
    }
    

    【讨论】:

    • 嘿伙计,我尝试更改为 ReadableDatabase() 和 getColumn 但我不断收到相同的错误... - 只是为了澄清 - 我只想知道有多少条目(行)我的表有,并为它返回一个“int”值
    • 试试SELECT * FROM Students
    • 感谢 Blackbelt,我改变了处理这个问题的方式,它奏效了
    • 不客气。那你介意接受答案吗??
    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 2017-05-22
    • 2014-01-02
    • 2013-05-06
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多