2013-08-16 172 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