我是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
答案 0 :(得分:1)
您的光标在索引-1处初始化。您需要致电moveToNext()或moveToPosition(int)将其设置为包含数据的位置。
答案 1 :(得分:1)
尝试将光标移动到第一个位置第一个示例
cursor.moveToPosition(0);