J'ai fait une application en eclipse pour android où vous pouvez remplir les informations d'une personne comme le nom, email, adresse, etc. Dans cette application, je dois inclure un bouton de recherche, qui va chercher une personne qui est enregistrée dans le base de données lorsqu'une ou plusieurs informations sont connues. Par exemple. Lorsque je me souviens seulement de l'adresse e-mail d'une personne enregistrée dans la base de données, je dois être en mesure de trouver cette personne en cherchant un e-mail correspondant. Ce code je pour le faire:Pourquoi la requête rawquery dans ma base de données sqlite me donne-t-elle la mauvaise personne?
public Person getPerson(String naam, String adres, String email, String geslacht,
String leeftijd, String geboortedatum){
SQLiteDatabase db= this.getReadableDatabase();
Cursor curs=db.rawQuery("SELECT * FROM personen WHERE name = ? OR adress = ? "
+ "OR email = ? OR gender = ? OR age = ? OR birthday = ?",
new String[]{naam==null?"'":naam, adres==null?"'":adres,
email==null?"'":email, geslacht==null?"'":geslacht,
leeftijd==null?"'":leeftijd, geboortedatum==null?"'":geboortedatum});
if(curs!=null)
curs.moveToFirst();
La raison pour laquelle je l'ai changé les args [] quand il a inclus une valeur nulle est que sinon le rawQuery ne fonctionnera pas. Ce code, cependant, ne renvoie pas la personne que je cherchais, mais il renvoie simplement la toute première personne dans la base de données. Lorsque simplifier le code en faisant la recherche de requête pour un nom de personnes seulement il ne fait retourner la personne avec ce nom:
Cursor curs=db.rawQuery("SELECT * FROM personen WHERE name = ?", new String[]{naam});
if(curs!=null)
curs.moveToFirst();
Quel est le problème avec la première rawQuery et pourquoi ne pas renvoyer la personne que je » Je cherche, mais simplement la première personne dans la base de données, alors que la deuxième rawQuery renvoie la bonne personne?
retournera seulement la première rangée, donc vous devez faire un temps –
vous avez des personnes avec des propriétés en commun. regarde la taille de ton curseur. – njzk2
curs.moveToFirst(); retourner seulement la première ligne du résultat –