2012-06-26 5 views
3

C'est un simple! Pourtant, il me manque quelque chose. Sil te plait aide moi. Ici, j'essaie d'extraire des valeurs par identifiant, mais je ne peux pas le faire. Il retourne les mêmes valeurs même après avoir changé la valeur de l'ID.comment récupérer une ligne en utilisant id sqlite?

db = openOrCreateDatabase("DBSOURCE", 0, null); 
    Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID="+id+"", null); 
    cursorc.moveToFirst(); 

    int NameID = cursorc.getColumnIndex("Name"); 
    int mobilenumberID = cursorc.getColumnIndex("MoblieNumber"); 

    edName.setText(cursorc.getString(NameID)); 
    edMobNum.setText(cursorc.getString(mobilenumberID)); 

    cursorc.close(); 

    db.close(); 
+0

Dans votre tableau, quel est le type de champ ID? –

+0

son de type int, c'est une clé primaire auto incrémentale pour la table. – Aadi

+1

Écrire en boucle pour obtenir toutes les valeurs du curseur –

Répondre

6

1- ou mieux d'utiliser la déclaration paramétrisé

String query = "SELECT COUNT(*) FROM " + tableName + " WHERE columnName = ?"; 
cursor = db.rawQuery(query, new String[] {comment}); 

2 - utiliser si avec conditon c.moveToFirst() ou c.getCount()> 0 ou (c.isAfterLast())

if (c.moveToFirst()){ 
    do{ 
     //if you not need the loop you can remove that 
     id = c.getInt(c.getColumnIndex("_id")); 
    } 
while(cursor.moveToNext()); 
}c.close(); 
0

essayer cette

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID='"+id+"'", null); 
1

essayez d'utiliser

Cursor cursorc = db.rawQuery("select * from list where ID = ?", new String[] {id+""}); 
2

essayer avec cette façon

Suppose long id=5; 
    String[] col=new String[]{KEY_ROWID,KEY_NAME,KEY_ADDRESS}; // your column which data u want to retrive if id is same 
    Cursor c=db.query(DATABASE_TABLE, col, KEY_ROWID+"="+id,null, null, null, null); 
    if(c!=null){ 
    c.moveToFirst(); 
    // get data here which u want accroding to ur requirement 
    } 
+0

Son exception de pointeur null de lancement :( – Aadi

+0

ont des changements d'accroding à votre nom de colonne supposer ur nom de colonne = _in que String KEY_ROWID = "_ id" même que pour database_table et d'autres champs – Khan

5

est le titre de la colonne id réellement "ID"? Ou est-ce une variable qui est définie sur "_id" (le nom de colonne habituel pour la clé primaire dans une base de données Android)? Si ce dernier, votre requête n'est pas correcte, car vous utilisez "ID" comme nom de colonne littéral. Essayez de changer à ceci:

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE " + ID + " = " + id, null); 

ou même ceci:

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE _id = " + id, null); 
Questions connexes