我是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