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