2012-01-17 173 views
0

我正在創建一個用戶登錄應用程序。我想在用佈局文本瀏覽器登錄時顯示用戶的帳戶信息。這是一個佈局的圖像。 enter image description here從SQLite數據庫檢索數據

這裏是我得到一個用戶的數據的代碼,當他登錄:

public Cursor getUserData(String username){ 
    Cursor UserDataCursor = getReadableDatabase().rawQuery(
      "SELECT * FROM " + USER_TABLE_NAME + " WHERE " + 
      USER_NAME + "='" + username+"'", null); 
    return UserDataCursor; 

下面是與該類檢索數據的代碼:

   String email2 = cursor.getString(cursor.getColumnIndex("email")); 
       String name2 = cursor.getString(cursor.getColumnIndex("name")); 
       String pass2 = cursor.getString(cursor.getColumnIndex("pass")); 
       String gender2 = cursor.getString(cursor.getColumnIndex("gender")); 
       String date2 = cursor.getString(cursor.getColumnIndex("date")); 
       String country2 = cursor.getString(cursor.getColumnIndex("country")); 
       String reg2 = cursor.getString(cursor.getColumnIndex("reg")); 
       data+=email2+" "+name2+" "+pass2+" "+gender2+" "+date2+" "+country2+" "+reg2+"\n" ; 
       cursor.moveToNext(); 
      } 

它給一個空指針異常。這裏有什麼問題?我該如何解決它?

+0

我用Cursor cursor = dbopen.getUserData(username);在給定代碼的頂部。 – 2012-01-17 22:23:27

+2

它可以是任何數量的東西。您應該在Logcat中發佈您收到的錯誤,以幫助我們確定在哪裏尋找。 – dymmeh 2012-01-17 22:25:07

+0

什麼是光標?請也發佈該代碼。 cursor.getString( 「電子郵件」);你試過這個嗎? – kosa 2012-01-17 22:26:26

回答

0

我認爲你不使用數據庫適配器模式會讓自己變得更難。

看看這裏的如何建立更多的抽象和錯誤處理您的數據庫的例子: http://www.devx.com/wireless/Article/40842/1954

這是很難驗證你的代碼,因爲它是依賴於數據的。你的列名可能是錯誤的(或者可能缺少一個)。你的數據類型可能是錯誤的。你可能會得到一個沒有行的遊標,你需要檢查。

順便說一句,你開始之前做cursor.moveToFirst()嗎?

此外,我們不知道發生錯誤的第70行是什麼,因爲行號在發佈中丟失。