Requete sql avec plusieurs champs text

Résolu
sid002 Messages postés 30 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 4 janvier 2011 - 24 nov. 2009 à 16:23
sid002 Messages postés 30 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 4 janvier 2011 - 25 nov. 2009 à 09:57
Bonjour,

J'ai crée un formulaire avec plusieurs champs de recherche pour constituer une requete sql.
Si je fais une requete général qui prend d'office compte de tous les champs de ma recherche (même ceux qui sont à vide), mon résultat ne sera pas correct.
Mon problème : il y a 5 champs, il y a donc 5*5=25 possibilités de requete sql pour trouver le résultat.(J'ai pensé à des switch , des if ... mais ça va etre le bordel !)

Pouvez-vous m'aidez ? Merci

sidus

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 nov. 2009 à 18:00
Salut,

C'est la fonction append et non add en effet.
______________________________________
DarK Sidious
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 nov. 2009 à 16:36
Salut,

Heureusement, il y a bien plus simple ! Il suffit de créer ta requête selon les champs remplis au fur et à mesure, par exemple :
protected String creerRequete(boolean first, String nomChamp, String valeur, boolean texte) {
  StringBuffer resultat = new StringBuffer();
  if (first) {
    resultat.add(" WHERE ");
  } else {
    resultat.add(" AND ");
  }
  resultat.add(nomChamp).add(" = ");
  if (texte) {
    resultat.add("'");
  }
  resultat.add(texte);
  if (texte) {
    resultat.add("'");
  }
}

StringBuffer requete = new StringBuffer("SELECT champ1, champ2, champ3 FROM table");
boolean first = true;

if (!("").equals(txtNom.getText())) {
  requete.add(creerRequete(first, "nom", txtNom.getText(), true));
  first=false;
}
if (!("").equals(txtPrenom.getText())) {
  requete.add(creerRequete(first, "prenom", txtPrenom.getText(), true));
  first=false;
}
if (!("").equals(txtAge.getText())) {
  requete.add(creerRequete(first, "age", txtAge.getText(), false));
  first=false;
}


A tester, j'ai fait cà de tête, mais ca doit ressembler à cà.
______________________________________
DarK Sidious
0
sid002 Messages postés 30 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 4 janvier 2011
24 nov. 2009 à 16:47
Je t'avouerai que j'ai pas tout compris mais je vais analyser tout ça mais à première vue ça devrait résoudre mon soucis.

Un grand merci !

sidus
0
sid002 Messages postés 30 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 4 janvier 2011
24 nov. 2009 à 17:27
Apperemment la methode add() n'existe pas sur un stringbuffer ...

sidus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sid002 Messages postés 30 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 4 janvier 2011
25 nov. 2009 à 09:57
Ca marche nikel !
Merci pour la qualité et la rapidité de tes réponses.

sidus
0
Rejoignez-nous