2012-04-04 116 views
0

我試圖在我的Db中創建一個方法。我想從具有特定列名的特定行中的數據庫返回一個字符串。 我試過這個,但它不起作用。 有人可以幫我嗎?從數據庫返回字符串

public String getNameAtPosition(String row){ 
    String name = null; 

    Cursor c = mDb.query(ValuteMetaData.VALUTE_TABLE, null, ValuteMetaData.ID + "=" + row, null, null, null, null); 

    name = String.valueOf(c.getLong(ValuteMetaData.VALUTE_NAME_KEY)); 

    return name; 
} 


public Cursor fetchValuteListView(String data){ 
     String[] data_query={data}; 
     return mDb.query(ValuteMetaData.VALUTE_TABLE,null,ValuteMetaData.VALUTE_DATA_KEY+"=?",data_query,null,null,null);    
} 


static class ValuteMetaData { // i metadati della tabella, accessibili ovunque 
     static final String VALUTE_TABLE = "Valute"; 
     static final String ID = "_id"; 
     static final String VALUTE_NAME_KEY = "name"; 
     static final String VALUTE_SIGLA_KEY = "sigla"; 
     static final String VALUTE_CAMBIO_KEY = "cambio"; 
     static final String VALUTE_DATA_KEY = " data"; 
} 

private static final String VALUTE_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " //codice sql di creazione della tabella 
       + ValuteMetaData.VALUTE_TABLE + " (" 
       + ValuteMetaData.ID+ " integer primary key autoincrement, " 
       + ValuteMetaData.VALUTE_NAME_KEY + " text, " 
       + ValuteMetaData.VALUTE_SIGLA_KEY + " text, " 
       + ValuteMetaData.VALUTE_CAMBIO_KEY + " text, " 
       + ValuteMetaData.VALUTE_DATA_KEY + " text);"; 
+0

你什麼錯誤? – Blundell 2012-04-04 12:18:29

+0

我沒有錯誤。我需要幫助來提高我的代碼在方法「公共字符串getNameAtPosition」返回一個字符串與選定的記錄 – Twing90 2012-04-04 12:20:40

回答

1

更改方法如下查詢:

public String getNameAtPosition(String row){ 
    String name = null; 

    Cursor c = mDb.query(ValuteMetaData.VALUTE_TABLE, null, 
      ValuteMetaData.ID + " = ?" , new String[]{row}, null, null, null); 

    if(c.moveToFirst()) 
     name = c.getString(c.getColumnIndex(ValuteMetaData.VALUTE_NAME_KEY)); 

    return name; 
} 
1

使用光標,你應該將其指向行之前。在你的情況,你應該寫:

c.moveToFirst(); 
+0

非常感謝!你是最棒的!!! – Twing90 2012-04-04 12:23:18

0

變化:

name = String.valueOf(c.getLong(ValuteMetaData.VALUTE_NAME_KEY)); 

到(注意 「的getString」 和 「getColumnIndex」)

if(c.moveToFirst()){ 
    name = String.valueOf(c.getString(c.getColumnIndex(ValuteMetaData.VALUTE_NAME_KEY))); 
}