2012-04-04 3 views
0

J'essaye de créer une méthode dans mon Db. je veux renvoyer une chaîne de mon DB dans une rangée spécifique avec un nom de colonne spécifique. J'ai essayé mais ça ne marche pas. Quelqu'un peut-il m'aider s'il vous plaît ??Renvoyer la chaîne de la base de données

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

Quelle est l'erreur que vous obtenez? – Blundell

+0

Je n'ai pas d'erreur. J'ai besoin d'aide pour améliorer mon code dans la méthode "public String getNameAtPosition" pour retourner une chaîne avec l'enregistrement sélectionné – Twing90

Répondre

1

Changer votre méthode et requête comme suit:

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

Avant d'utiliser le curseur, vous devez pointer vers la ligne. Dans votre cas, vous devez écrire:

c.moveToFirst(); 
+0

merci beaucoup !!! tu es le meilleur!!! – Twing90

0

Change:

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

à (attention à "getString" et "getColumnIndex")

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