Requete sql avec plusieurs champs text [Résolu]

Signaler
Messages postés
30
Date d'inscription
dimanche 16 avril 2006
Statut
Membre
Dernière intervention
4 janvier 2011
-
Messages postés
30
Date d'inscription
dimanche 16 avril 2006
Statut
Membre
Dernière intervention
4 janvier 2011
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Salut,

C'est la fonction append et non add en effet.
______________________________________
DarK Sidious
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
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
Messages postés
30
Date d'inscription
dimanche 16 avril 2006
Statut
Membre
Dernière intervention
4 janvier 2011

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
Messages postés
30
Date d'inscription
dimanche 16 avril 2006
Statut
Membre
Dernière intervention
4 janvier 2011

Apperemment la methode add() n'existe pas sur un stringbuffer ...

sidus
Messages postés
30
Date d'inscription
dimanche 16 avril 2006
Statut
Membre
Dernière intervention
4 janvier 2011

Ca marche nikel !
Merci pour la qualité et la rapidité de tes réponses.

sidus