j'ai un problème avec la gestion de chaine de caractère en java dans une requete
SQL.
En fait, je programme une combo qui permet le choix multiple et je voudrais
passer les choix à une requête SQL qui va aller farfouiller dans une base de
données.
Pour une série d'entiers, j'ai utilisé la syntaxe:
*********************
requete.append("select days_before, sum(leg_price), count(*) from produit_temp
where "
+ "intended_date between ? and ? and direction= ? and requester= ? and
agent_type= ? and ticket_type= ? "
+ "and intended_date_dayOfWeek=? ");
for (int i = 0; i < hour.length; i++) {
if (i == 0)
requete.append("and intended_hour in (");
requete.append(hour[i].intValue());
if (i == (hour.length - 1))
requete.append(")");
else
requete.append(",");
}
requete.append("and leg_price>? group by days_before");
**************************************
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de
caractère cette fois...car la syntaxe en SQL pour les entiers est "
intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in
("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème dans
l'écriture de la requete, le programme ne veut pas souvent les reconnaitre comme
caractère quand je fais " " " (il ne lit pas le " du milieu comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces
multiples choix aux requetes?
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
Emmanuel Puybaret
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de caractère cette fois...car la syntaxe en SQL pour les entiers est " intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in ("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème dans l'écriture de la requete, le programme ne veut pas souvent les reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un caractère devant. Pour les chaînes SQL, une autre solution consiste à utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui réduisent la lisibilité. Ce que je ne comprends pas c'est qu'apparemment tu utilises les PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors pourquoi tu ne mets pas des ? pour ces trois chaînes...
Cordialement -- Emmanuel PUYBARET Email : Web : http://www.eteks.com Auteur du Cahier du programmeur Java [1] / Editions Eyrolles : http://www.eteks.com/services/cahierjava1.html
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de
caractère cette fois...car la syntaxe en SQL pour les entiers est "
intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in
("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème
dans l'écriture de la requete, le programme ne veut pas souvent les
reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu
comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces
multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un
caractère devant. Pour les chaînes SQL, une autre solution consiste à
utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui
réduisent la lisibilité.
Ce que je ne comprends pas c'est qu'apparemment tu utilises les
PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors
pourquoi tu ne mets pas des ? pour ces trois chaînes...
Cordialement
--
Emmanuel PUYBARET
Email : puybaret@eteks.com
Web : http://www.eteks.com
Auteur du Cahier du programmeur Java [1] / Editions Eyrolles :
http://www.eteks.com/services/cahierjava1.html
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de caractère cette fois...car la syntaxe en SQL pour les entiers est " intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in ("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème dans l'écriture de la requete, le programme ne veut pas souvent les reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un caractère devant. Pour les chaînes SQL, une autre solution consiste à utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui réduisent la lisibilité. Ce que je ne comprends pas c'est qu'apparemment tu utilises les PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors pourquoi tu ne mets pas des ? pour ces trois chaînes...
Cordialement -- Emmanuel PUYBARET Email : Web : http://www.eteks.com Auteur du Cahier du programmeur Java [1] / Editions Eyrolles : http://www.eteks.com/services/cahierjava1.html
Osiris
Emmanuel Puybaret wrote:
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de caractère cette fois...car la syntaxe en SQL pour les entiers est " intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in ("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème dans l'écriture de la requete, le programme ne veut pas souvent les reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un caractère devant. Pour les chaînes SQL, une autre solution consiste à utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui réduisent la lisibilité. Ce que je ne comprends pas c'est qu'apparemment tu utilises les PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors pourquoi tu ne mets pas des ? pour ces trois chaînes...
Merci beaucoup de ta réponse.... je ne mets pas des ? parce qu'en fait il n'y aura pas forcéent trois chaînes plus tard, j'essaye de faire ne sorte que si les combo contiennent plus de critères par la suite,qu'on ne soit pas obligé de modifier le programme.
Et si je mets des ? je vais écrire un truc du genre: select blabla from table where intended_hour = ? OR intended_hour=? and autre_critere= ? group by blabla ? parce que je ne sais pas faire le "ou" dans uen requete autrement qu'en faisant intendend_hour IN (...,...,...) .
merci pour l'astuce du ' à la place du ", ça je ne savais pas!
entre autre, connais tu une solution pour les combo à choix multiple? en fait, j'ai 10 combo et chacune peut avoir jusqu'à 20 choix possibles. ça me fait 10 boucles "for" du type de mon premier message à éceire, je perdrais en lisibilité.
Merci encore
Emmanuel Puybaret wrote:
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de
caractère cette fois...car la syntaxe en SQL pour les entiers est "
intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in
("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème
dans l'écriture de la requete, le programme ne veut pas souvent les
reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu
comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces
multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un
caractère devant. Pour les chaînes SQL, une autre solution consiste à
utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui
réduisent la lisibilité.
Ce que je ne comprends pas c'est qu'apparemment tu utilises les
PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors
pourquoi tu ne mets pas des ? pour ces trois chaînes...
Merci beaucoup de ta réponse....
je ne mets pas des ? parce qu'en fait il n'y aura pas forcéent trois chaînes
plus tard, j'essaye de faire ne sorte que si les combo contiennent plus de
critères par la suite,qu'on ne soit pas obligé de modifier le programme.
Et si je mets des ? je vais écrire un truc du genre:
select blabla from table where intended_hour = ? OR intended_hour=? and
autre_critere= ? group by blabla ?
parce que je ne sais pas faire le "ou" dans uen requete autrement qu'en faisant
intendend_hour IN (...,...,...) .
merci pour l'astuce du ' à la place du ", ça je ne savais pas!
entre autre, connais tu une solution pour les combo à choix multiple? en fait,
j'ai 10 combo et chacune peut avoir jusqu'à 20 choix possibles. ça me fait 10
boucles "for" du type de mon premier message à éceire, je perdrais en lisibilité.
je n'arrive pas à faire pareil si les "intended_hour" sont des chaines de caractère cette fois...car la syntaxe en SQL pour les entiers est " intended_hour in (1,2,3)" alors que pour les string, c'est "intended_hour in ("str1", "str2", "str3") " et ce sont les << " >> qui me posent problème dans l'écriture de la requete, le programme ne veut pas souvent les reconnaitre comme caractère quand je fais " " " (il ne lit pas le " du milieu comme tel!)
Quelqu'un sait comment faire ou connait une meilleure solution pour passer ces multiples choix aux requetes?
Pour avoir le caractère " dans une chaîne Java il te faut mettre un caractère devant. Pour les chaînes SQL, une autre solution consiste à utiliser le caractère ' à la place du ", ça évite d'avoir des partout qui réduisent la lisibilité. Ce que je ne comprends pas c'est qu'apparemment tu utilises les PreparedStatement vu qu'il y a plein de caractères ? dans ta requête, alors pourquoi tu ne mets pas des ? pour ces trois chaînes...
Merci beaucoup de ta réponse.... je ne mets pas des ? parce qu'en fait il n'y aura pas forcéent trois chaînes plus tard, j'essaye de faire ne sorte que si les combo contiennent plus de critères par la suite,qu'on ne soit pas obligé de modifier le programme.
Et si je mets des ? je vais écrire un truc du genre: select blabla from table where intended_hour = ? OR intended_hour=? and autre_critere= ? group by blabla ? parce que je ne sais pas faire le "ou" dans uen requete autrement qu'en faisant intendend_hour IN (...,...,...) .
merci pour l'astuce du ' à la place du ", ça je ne savais pas!
entre autre, connais tu une solution pour les combo à choix multiple? en fait, j'ai 10 combo et chacune peut avoir jusqu'à 20 choix possibles. ça me fait 10 boucles "for" du type de mon premier message à éceire, je perdrais en lisibilité.