2012-04-04 79 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))); 
}