2015-12-03 48 views
0

我正在開發簡單的應用程序以從SQLite數據庫中檢索字符串並將其顯示在我的主要活動的TextView中。爲此,我在處理SQLite數據庫的類中創建了方法,然後在主要活動內部調用了該方法,但它所做的僅僅是給出NullPointerException在Android中從SQLite返回字符串

我的SQLite數據庫處理程序類中的方法。

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(
      "CREATE TABLE " + PERSON_TABLE_NAME + 
        "(" + PERSON_COLUMN_ID + " INTEGER PRIMARY KEY, " + 
        PERSON_COLUMN_NAME + " TEXT, " + 
        PERSON_COLUMN_GENDER + " TEXT, " + 
        PERSON_COLUMN_AGE + " INTEGER)" 
    ); 

}......//////////// Some Code........... 






public String getAddress(int id) { 
    // TODO Auto-generated method stub 
    SQLiteDatabase db = this.getReadableDatabase(); 


    try { 
     Cursor cursor = db.rawQuery("SELECT * FROM " + PERSON_TABLE_NAME + " WHERE " + 
       PERSON_COLUMN_ID + "=?", new String[]{Integer.toString(id)}); 

     if (cursor != null) { 
      cursor.moveToFirst(); 
      return cursor.getString (cursor.getColumnIndex (PERSON_COLUMN_NAME)); 
     } 
    } 
    catch (Exception e) { 

     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return ""; 
} 

我的主要活動我在哪裏調用方法。

button = (Button) findViewById(R.id.addNew); 
    button.setText(dbHelper.getAddress(8)); 
+0

那麼問題是什麼? – Buddy

+0

它只是在我啓動Activity時給出NullPointerException。 – FARID

+0

請包括您的logcat顯示完整的異常和堆棧跟蹤。 – Buddy

回答

-1

可能是您的第一行確實包含空字符串PERSON_COLUMN_NAME(列)。 嘗試增加數據庫版本並再次添加行。

OR試試這個:

String[] columns = {PERSON_COLUMN_ID, PERSON_COLUMN_NAME}; 
    Cursor res = db.query(PERSON_TABLE_NAME, columns, null, null, null,null, null); 
    res.moveToFirst(); 
    do{ 
     res.moveToNext();} 
    while(res.getString(0) != id) 
    return res.getString(1); 

附:這本可以寫在評論中,但由於我的名聲低於50,我必須將其寫爲答案。

+0

的方法謝謝,你的回答幫助我瞭解我的問題。所以我接受它作爲答案 – FARID