2015-11-07 159 views
0

我是Android Studio的新手,这是我使用数据库连接的第一个应用程序,所以我可能从根本上误解了光标的工作原理。Android Studio - Cursor.getString()抛出异常

我在查询我的数据库,测试显示查询成功,特别是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

+0

当询问有关异常的问题,或登录一个,确保报告** **类型的异常,如CursorIndexOutOfBoundsException ,而不仅仅是例外的消息。这是找出问题的最关键信息。您可以通过添加例外(您的'e'参数)作为Log.d()'调用的第三个参数来轻松找到它。 – LarsH

回答

1

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

cursor.moveToPosition(0); 
+0

这就是我需要的,谢谢! –

+0

投票将会很棒 –

+0

我已经投了票,但他们不会显示我的反馈,直到我达到15个代表。 –