2016-04-23 63 views
-1

我有這個應用程序,它使用用戶登錄的用戶名從數據庫獲取用戶數據。用戶名在登錄到檢索其帳戶信息的頁面後傳遞。該應用程序崩潰說檢索信息是錯誤的,任何人都可以幫忙嗎?正在檢索用戶帳戶

數據庫代碼

public Cursor RetriveLoggedUsersData (DatabasOpperations DBOpp, String Username){ 
    SQLiteDatabase SQDB = DBOpp.getReadableDatabase(); 
    String[] Coloumns = {TableData.TableInfo.FIRSTNAME, TableData.TableInfo.LASTNAME, TableData.TableInfo.EMAIL, TableData.TableInfo.USERNAME, TableData.TableInfo.PASSWORD, TableData.TableInfo.IMAGE}; 
    String Where = TableData.TableInfo.USERNAME + " LIKE ?"; 
    String Argument[] = {Username}; 
    Cursor Cur = SQDB.query(TableData.TableInfo.TABLE_NAME, Coloumns, Where, Argument, null, null, null); 
    Log.d("DatabaseOperations", "Success, User Retrived"); 
    return Cur; 
} 

其想要檢索數據的代碼

Username = getIntent().getExtras().getString("Username"); 

DatabasOpperations DB = new DatabasOpperations(Contx); 
     Cursor Cur = DB.RetriveLoggedUsersData(DB, Username); 
     DBFName = Cur.getString(0); 
     DBLName = Cur.getString(1); 
     DBEmail = Cur.getString(2); 
+0

當您的應用程序發生崩潰時,logcat輸出在發佈您的問題時相關,以便跟蹤問題變得更加容易。 –

回答

2

你需要通過調用來moveToFirst()將光標移動到第一位置,同時檢查返回值以確保遊標中至少有一行。此外,請務必關閉您的光標:

Cursor Cur = DB.RetriveLoggedUsersData(DB, Username); 
if (Cur.moveToFirst()) { 
    DBFName = Cur.getString(0); 
    DBLName = Cur.getString(1); 
    DBEmail = Cur.getString(2); 
} 
Cur.close(); 
+0

非常感謝你,它的工作! – RexDough

+0

@RexDough沒問題!如果下一次崩潰,一定要包含堆棧跟蹤! –

+0

好的謝謝,並會做 – RexDough