Bonjour, je voudrais faire un requete de recherche en modifiant le
nombre de parametres... c'esst à dire en choisissant plusieurs critères :
ex : sur une meme requete : si j'ai trois champs entiers : age, taille,
nombre d'heures, pouvoir chercher tous les hommes de taille x et age y
ou encore d'age z .... je peux avoir 0 à n critères (1 à n-1
éventuellement), qui sont tous de type int, et pourquoi pas de type
autre si c'est faisable....
le preparedstatement de java.sql et ses "?" ne me semble pas suffisant,
qui peut me proposer une solution ?
Pour des questions d'optimisation, je préfère ne pas recreer un
statement systématiquement et me taper plein de conditionnelles...
Je suis à la recherche d'une solution SQL et Java (pasque faut filer les
conditions en parametres aussi, et la surdéfinition de méthode trouve
ses limites... ex : comment distinguer f(age,taille) de f(age,poids) ...
Des tableaux chaines de caractères et masques sont faisables pour un
petit nombre de critères mais c'est pas élégant.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick Gras
Hello,
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR taille0)
Et voilà -Patrick
"Pif" wrote in message news:df4j3c$mc3$
Bonjour, je voudrais faire un requete de recherche en modifiant le nombre de parametres... c'esst à dire en choisissant plusieurs critères :
ex : sur une meme requete : si j'ai trois champs entiers : age, taille, nombre d'heures, pouvoir chercher tous les hommes de taille x et age y ou encore d'age z .... je peux avoir 0 à n critères (1 à n-1 éventuellement), qui sont tous de type int, et pourquoi pas de type autre si c'est faisable....
le preparedstatement de java.sql et ses "?" ne me semble pas suffisant, qui peut me proposer une solution ?
Pour des questions d'optimisation, je préfère ne pas recreer un statement systématiquement et me taper plein de conditionnelles...
Je suis à la recherche d'une solution SQL et Java (pasque faut filer les conditions en parametres aussi, et la surdéfinition de méthode trouve ses limites... ex : comment distinguer f(age,taille) de f(age,poids) ...
Des tableaux chaines de caractères et masques sont faisables pour un petit nombre de critères mais c'est pas élégant.
Merci pour vos suggestions !
Hello,
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR
taille0)
Et voilà
-Patrick
"Pif" <pif@nospam.fr> wrote in message news:df4j3c$mc3$1@eerie.ema.fr...
Bonjour, je voudrais faire un requete de recherche en modifiant le
nombre de parametres... c'esst à dire en choisissant plusieurs critères :
ex : sur une meme requete : si j'ai trois champs entiers : age, taille,
nombre d'heures, pouvoir chercher tous les hommes de taille x et age y
ou encore d'age z .... je peux avoir 0 à n critères (1 à n-1
éventuellement), qui sont tous de type int, et pourquoi pas de type
autre si c'est faisable....
le preparedstatement de java.sql et ses "?" ne me semble pas suffisant,
qui peut me proposer une solution ?
Pour des questions d'optimisation, je préfère ne pas recreer un
statement systématiquement et me taper plein de conditionnelles...
Je suis à la recherche d'une solution SQL et Java (pasque faut filer les
conditions en parametres aussi, et la surdéfinition de méthode trouve
ses limites... ex : comment distinguer f(age,taille) de f(age,poids) ...
Des tableaux chaines de caractères et masques sont faisables pour un
petit nombre de critères mais c'est pas élégant.
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR taille0)
Et voilà -Patrick
"Pif" wrote in message news:df4j3c$mc3$
Bonjour, je voudrais faire un requete de recherche en modifiant le nombre de parametres... c'esst à dire en choisissant plusieurs critères :
ex : sur une meme requete : si j'ai trois champs entiers : age, taille, nombre d'heures, pouvoir chercher tous les hommes de taille x et age y ou encore d'age z .... je peux avoir 0 à n critères (1 à n-1 éventuellement), qui sont tous de type int, et pourquoi pas de type autre si c'est faisable....
le preparedstatement de java.sql et ses "?" ne me semble pas suffisant, qui peut me proposer une solution ?
Pour des questions d'optimisation, je préfère ne pas recreer un statement systématiquement et me taper plein de conditionnelles...
Je suis à la recherche d'une solution SQL et Java (pasque faut filer les conditions en parametres aussi, et la surdéfinition de méthode trouve ses limites... ex : comment distinguer f(age,taille) de f(age,poids) ...
Des tableaux chaines de caractères et masques sont faisables pour un petit nombre de critères mais c'est pas élégant.
Merci pour vos suggestions !
Pif
Ahh..... voila une bonne suggestion, je suis couillon de pas y' avoir pensé plus tot !
Bon, alors la je sais comment faire 1 seul statement, et ca me branche bien...
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Si quelqu'un a une astuce, ca me branche tout plein !
merci !
Hello,
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR taille0)
Et voilà -Patrick
Ahh..... voila une bonne suggestion, je suis couillon de pas y' avoir
pensé plus tot !
Bon, alors la je sais comment faire 1 seul statement, et ca me branche
bien...
maintenant j'ai plein de parametres et si je décline, ca me fait
décliner plein de prototypes de fonctions différentes, et la surcharge a
ses limites f(int, int, int, int) par exemple,comment savoir ?
Si quelqu'un a une astuce, ca me branche tout plein !
merci !
Hello,
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR
taille0)
Ahh..... voila une bonne suggestion, je suis couillon de pas y' avoir pensé plus tot !
Bon, alors la je sais comment faire 1 seul statement, et ca me branche bien...
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Si quelqu'un a une astuce, ca me branche tout plein !
merci !
Hello,
Si tu veux faire ça avec une seule SQL voilà un exemple:
SELECT age, taille FORM maTable WHERE (0=? OR age=?) AND (0=? OR taille=?)
Si le critère age n'a pas d'importance tu met (0=0 OR age=0) AND (0=1 OR taille0)
Et voilà -Patrick
Simon OUALID
Pif wrote:
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
Symon
Pif wrote:
maintenant j'ai plein de parametres et si je décline, ca me fait
décliner plein de prototypes de fonctions différentes, et la surcharge a
ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une
map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
Symon
Patrick Gras
Hello,
J'imagine qu'il n'y a pas tant de paramètres que ça.
Pourquoi tu n'écrit pas une seule méthode qui prend tous les paramètres, et tu passe null si ce n'est pas un critère (ou une valeur par défaut si tu utilises des int.)
public List findPersonne(Integer age, Integer poids, Integer taille) { int critereAge=1; int criterePoids=1; int critereTaille=1;
if (age=null){ age = new Integer(0); critereAge=0; } if (poids=null){ poids= new Integer(0); criterePoids=0; }
SQL = Select xxx where ( 0=critereAge OR age=age) AND ( 0=criterePoids OR poids=poids) AND ....
}
-Patrick
"Simon OUALID" wrote in message news:df6ok5$df6$
Pif wrote:
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
Symon
Hello,
J'imagine qu'il n'y a pas tant de paramètres que ça.
Pourquoi tu n'écrit pas une seule méthode qui prend tous les paramètres, et
tu passe null si ce n'est pas un critère (ou une valeur par défaut si tu
utilises des int.)
public List findPersonne(Integer age, Integer poids, Integer taille)
{
int critereAge=1;
int criterePoids=1;
int critereTaille=1;
if (age=null){ age = new Integer(0); critereAge=0; }
if (poids=null){ poids= new Integer(0); criterePoids=0; }
SQL = Select xxx where ( 0=critereAge OR age=age) AND ( 0=criterePoids OR
poids=poids) AND ....
}
-Patrick
"Simon OUALID" <symon@tatouage.fr> wrote in message
news:df6ok5$df6$1@apollon.grec.isp.9tel.net...
Pif wrote:
maintenant j'ai plein de parametres et si je décline, ca me fait
décliner plein de prototypes de fonctions différentes, et la surcharge a
ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une
map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
J'imagine qu'il n'y a pas tant de paramètres que ça.
Pourquoi tu n'écrit pas une seule méthode qui prend tous les paramètres, et tu passe null si ce n'est pas un critère (ou une valeur par défaut si tu utilises des int.)
public List findPersonne(Integer age, Integer poids, Integer taille) { int critereAge=1; int criterePoids=1; int critereTaille=1;
if (age=null){ age = new Integer(0); critereAge=0; } if (poids=null){ poids= new Integer(0); criterePoids=0; }
SQL = Select xxx where ( 0=critereAge OR age=age) AND ( 0=criterePoids OR poids=poids) AND ....
}
-Patrick
"Simon OUALID" wrote in message news:df6ok5$df6$
Pif wrote:
maintenant j'ai plein de parametres et si je décline, ca me fait décliner plein de prototypes de fonctions différentes, et la surcharge a ses limites f(int, int, int, int) par exemple,comment savoir ?
Tu peux utiliser un tableau d'objets plutôt que des primitives... Ou une map si tu as vraiment une chiée de paramètres.
execute(Object[] o);
ou
execute(Map m);
Après tu dépiottes pour construire la requête qui va bien.
Symon
Pif
c'est ce que j'ai fini par faire :) mais je révais à une technique à laquelle j'avais pas pensée qui soit plus efficace et lisible/pratique à manipuler....
merci...
c'est ce que j'ai fini par faire :) mais je révais à une technique à
laquelle j'avais pas pensée qui soit plus efficace et lisible/pratique à
manipuler....
c'est ce que j'ai fini par faire :) mais je révais à une technique à laquelle j'avais pas pensée qui soit plus efficace et lisible/pratique à manipuler....