J'ai pris la valeur String
d'un EditText
et l'ai placée dans la condition SELECT QUERY after WHERE
Comme
TextView tv = (TextView) findViewById(R.id.textView3);
EditTextet2 et = (EditText) findViewById(R.id.editText1);
String name = et.getText().toString();
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = '"+name+"'", null);
c.moveToNext();
tv.setText(c.getString(c.getColumnIndex("email")));
Mais ça ne marche pas. Aucune suggestion?
Essayez de couper la chaîne pour vous assurer qu'il n'y a pas d'espace blanc supplémentaire:
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null);
Utilisez également c.moveToFirst()
comme @thinksteep mentionné.
C'est un code complet pour les instructions select.
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT column1,column2,column3 FROM table ", null);
if (c.moveToFirst()){
do {
// Passing values
String column1 = c.getString(0);
String column2 = c.getString(1);
String column3 = c.getString(2);
// Do something Here with values
} while(c.moveToNext());
}
c.close();
db.close();
Essayez d'utiliser l'énoncé suivant:
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = ?", new String[] {name});
Android requiert que les clauses WHERE soient comparables à un?, Et vous spécifiez alors un nombre égal de? dans le deuxième paramètre de la requête (où vous avez actuellement null).
Et comme Nambari l’a mentionné, vous devriez utiliser c.moveToFirst()
plutôt que c.moveToNext()
Aussi, pourrait-il y avoir des citations de nom? Cela pourrait tout gâcher.
Voici le code ci-dessous.
String areaTyp = "SELECT " +AREA_TYPE + " FROM "
+ AREA_TYPE_TABLE + " where `" + TYPE + "`="
+ id;
où id est la condition sur laquelle le résultat sera affiché.
public User searchUser(String name) {
User u = new User();
SQLiteDatabase db = this.getWritableDatabase(); //get the database that was created in this instance
Cursor c = db.rawQuery("select * from " + TABLE_NAME_User+" where username =?", new String[]{name});
if (c.moveToLast()) {
u.setUsername(c.getString(1));
u.setEmail(c.getString(1));
u.setImgUrl(c.getString(2));
u.setScoreEng(c.getString(3));
u.setScoreFr(c.getString(4));
u.setScoreSpan(c.getString(5));
u.setScoreGer(c.getString(6));
u.setLevelFr(c.getString(7));
u.setLevelEng(c.getString(8));
u.setLevelSpan(c.getString(9));
u.setLevelGer(c.getString(10));
return u;
}else {
Log.e("error not found", "user can't be found or database empty");
return u;
}
}
C’est mon code pour sélectionner un utilisateur et un seul Vous devez donc créer un objet vide de votre classe. vous appelez votre base de données en écriture utilisez un curseur au cas où il y en aurait plusieurs et vous en avez besoin d'un ici vous avez le choix Utilisation: 1-
if (c.moveToLast()) { } //it return the last element in that cursor
ou Utilisation: 2-
if(c.moveToFirst()) { } //return the first object in the cursor
et n'oubliez pas que dans le cas où la base de données est vide, vous devrez vous en occuper. Dans mon cas, je viens de renvoyer un objet vide.
Bonne chance