Android Studio - Cursor.getString()抛出异常

时间:2015-11-07 20:40:05

标签: android database sqlite android-studio cursor

我是Android Studio的新手,这是我第一个使用数据库连接的应用程序,因此我可能只是从根本上误解了游标的工作原理。

我正在查询我的数据库,测试显示查询成功,特别是getCount()方法返回2作为游标对象包含的行数。但是,当我调用getString()方法时,它会抛出异常而不是返回列数据。

此代码可能出现任何错误?

    public void GetFacts(View v) {

    Cursor cursor = database.query(ExternalDbOpenHelper.TABLE_NAME,
            null, "valueRange = 'MEDIUM'", null, null, null, null);

    // Log number of rows from query
    Log.d("CursorTest", "Row count: " + cursor.getCount());

    try {
        // get data from "factName" column of database
        String columnName = cursor.getColumnName(0);
        Log.d("CursorTest", "Column Name: " + columnName);

        String data = cursor.getString(cursor.getColumnIndex(columnName));

    } catch(Exception e) {
        // Log exception thrown
        Log.d("CursorTest", "Error getting data: " + e.getMessage());

    }
}

日志给出了以下内容:

  

D / CursorTest:行数:2

     

D / CursorTest:列名:factName

     

D / CursorTest:获取数据时出错:请求索引-1,大小为2

2 个答案:

答案 0 :(得分:1)

您的光标在索引-1处初始化。您需要致电moveToNext()moveToPosition(int)将其设置为包含数据的位置。

答案 1 :(得分:1)

尝试将光标移动到第一个位置第一个示例

cursor.moveToPosition(0);