2011-11-15 52 views
0

我使用下面的代碼從sqlite獲取特定的記錄。無法顯示從sqlite獲取的記錄

public String getDetails(long phone) throws SQLException{ 
    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {NAME, AGE, AREA, PHONE, SEX}, PHONE + "=" + phone, null, null, null, null, null); 
    if(mCursor != null){ 
     mCursor.moveToFirst(); 
    } 
    String result = mCursor.getString(mCursor.getColumnIndex(NAME)); 
    return result; 
} 

我打電話來,從另一類這個方法與下面的代碼

dbAdapterExisting.read(); 
String temp = dbAdapterExisting.getDetails(mobile); 
dbAdapterExisting.close(); 
textViewExistingName.setText(temp); 

記錄越來越牽強和我能夠在TextView中顯示的「名稱」字段中,但我怎麼取所有的領域,即'年齡','地區','性別',並顯示在不同的文字瀏覽。

回答

0

由於您getDetails()方法只返回一個字符串,然後你想獲取多個項目,你需要改變一些事情。 Maps是以這種方式返回數據的良好數據結構。例如:

public Map<String, Object> getDetails(long phone) throws SQLException{ 

    Map<String, Object> map = new HashMap<String, Object>(); 

    Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {NAME, AGE, AREA, PHONE, SEX}, PHONE + "=" + phone, null, null, null, null, null); 

    if(mCursor != null){ 
     mCursor.moveToFirst(); 
    } 

    String name = mCursor.getString(mCursor.getColumnIndex(NAME)); 
    map.put(NAME, name); 
    String age = mCursor.getString(mCursor.getColumnIndex(AGE)); 
    map.put(AGE, age); 
    String area = mCursor.getString(mCursor.getColumnIndex(AREA)); 
    map.put(AREA, area); 
    map.put(PHONE, phone); 
    String sex = mCursor.getString(mCursor.getColumnIndex(SEX)); 
    map.put(SEX, sex); 

    return map; 

}

然後,在你調用代碼切換到使用地圖返回來代替:

Map<String, Object> temp = dbAdapterExisting.getDetails(mobile); 
// get the name: 
String name = temp.get(dbAdapterExisting.NAME); 
// etc.. 
+0

非常感謝,這段代碼工作得很好。 – User210282

1

正如以下。 我會舉一個例子來獲得性愛。

String sex = mCursor.getString(mCursor.getColumnIndex(SEX)); 

就像你那樣。 爲了得到一個浮動,雙,整數值使用 mCursor.getFloat /雙/整數

+0

感謝,但我是讀取多的東西,下面的幫助下提供Chris完美無缺。 – User210282