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
131
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
131
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