从数据库返回字符串

时间:2012-04-04 12:16:51

标签: android database

我正在尝试在我的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);";

3 个答案:

答案 0 :(得分: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 :(得分:1)

在使用光标之前,您应该将其指向行。在你的情况下,你应该写:

c.moveToFirst();

答案 2 :(得分:0)

变化:

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

to(注意“getString”和“getColumnIndex”)

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