0

データベースでメソッドを作成しようとしています。特定の列名を持つ特定の行のデータベースから文字列を返したいです。私はこれを試しましたが、うまくいきません。誰かが私を助けてくれますか??

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);";
4

3 に答える 3

1

Cursor を使用する前に、行をポイントする必要があります。あなたの場合、あなたは書くべきです:

c.moveToFirst();
于 2012-04-04T12:20:15.693 に答える
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;
}
于 2012-04-04T12:19:26.690 に答える
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)));
}
于 2012-04-04T12:20:21.233 に答える