2015-11-07 158 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個代表。 –