2013-08-16 171 views
2

我幾乎所有的事情都很好,四重檢查與數據庫和光標相關的每一件事情,我點擊一個活動按鈕後,下面的代碼運行從公共函數訪問字符串其他類:雖然初始化光標數據庫沒有初始化

DatabaseHandler dbfunc = new DatabaseHandler(getApplicationContext()); 
        String deviceCODE = dbfunc.getUSERdetailsSTRING(); 
        Log.i(TAG, deviceCODE); 

以下是DB處理類的公共職能:

public String getUSERdetailsSTRING(){ 
     HashMap<String,String> user = new HashMap<String,String>(); 
     String selectQuery = "SELECT * FROM " + TABLE_LOGIN; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     // Move to first row 
     cursor.moveToFirst(); 
     if(cursor.getCount() > 0){ 
      user.put("name", cursor.getString(1)); 
      user.put("email", cursor.getString(2)); 
      user.put("uid", cursor.getString(3)); 
      user.put("created_at", cursor.getString(4)); 
      user.put("Device Code", cursor.getString(5)); 
     } 
     cursor.moveToFirst(); 
     String deviceCODE = user.get(KEY_UID); 
     return deviceCODE; 
    } 

但它表明我的logcat的以下錯誤:

08-16 22:06:24.840: E/AndroidRuntime(25923): FATAL EXCEPTION: main 
08-16 22:06:24.840: E/AndroidRuntime(25923): java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 
08-16 22:06:24.840: E/AndroidRuntime(25923): at android.database.CursorWindow.nativeGetString(Native Method) 
08-16 22:06:24.840: E/AndroidRuntime(25923): at android.database.CursorWindow.getString(CursorWindow.java:438) 
08-16 22:06:24.840: E/AndroidRuntime(25923): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51) 
+0

退回之前關閉光標,然後重試! – Pavlos

+0

已經嘗試過 - 在同樣的問題之前和之後嘗試 – Naaz

回答

2

從那裏我拿了例子(http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/)那個傢伙開始從cursor.getString(1)計數的地方;從一個然而,它應該開始一個ZERO'0',現在解決它!

+0

他也從本教程的ZERO開始 – Pavlos

+0

對不起錯誤的鏈接正確的鏈接是這個>> http://www.androidhive.info/2012/01/android -login和登記與 - PHP-MySQL的和 - 源碼/ – Naaz