égalité de variable dans SQL

dounatt Messages postés 45 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 3 février 2014 - 7 févr. 2012 à 20:29
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 9 févr. 2012 à 08:03
Bonjour, j'ai le code java suivant:

..................
String[]tab=new String[10];
for (int i=0;i <10;i++){
r31=stm.executeQuery("SELECT objet FROM appels WHERE objet= "+tab[i]);
while (r31.next()){
Z1.add(r31.getString("objet"));
} }
....................


il y a un problème dans la requête, j'ai essayé avec r31=stm.executeQuery("SELECT objet FROM appels WHERE objet like 'tab[i]'"); mais ça maerche pas.

pouvez vous m'aider svp, ça fait 2 jours bloquée ici

6 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
8 févr. 2012 à 12:04
Salut,

petite précision, tu as vraiment tenté ça :
r31=stm.executeQuery("SELECT objet FROM appels WHERE objet like 'tab[i]'");

ou tu a tenté ça :
r31=stm.executeQuery("SELECT objet FROM appels WHERE objet= '"+tab[i]+"'"); 
0
dounatt Messages postés 45 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 3 février 2014
8 févr. 2012 à 12:35
Bonjour

1. Avec r31=stm.executeQuery("SELECT objet FROM appels WHERE objet= "+tab[i]);
sachant que objet est VARCHAR et tab[i] est String,
l'erreur est Unknown column 'adh' in 'where clause'
Cette requête marche bien si VARCHAR=integer (... WHERE numero=i)

2. Avec r31=stm.executeQuery("SELECT objet FROM appels WHERE objet like 'tab[i]'");
tab[i] n'est pas considéré comme variable, car la comparaison ne se fait pas
correctement.

J'ai essayé avec r31=stm.executeQuery("SELECT objet FROM appels WHERE objet= '"+tab[i]+"'"); une erreur java.lang.ArrayIndexOutOfBoundsException: 14


merci
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
8 févr. 2012 à 14:08
Re,

1. Vu qu'il n'y a pas de quote autour de ta valeur il s'attend à un objet, et non à une constante de type VARCHAR. Logique.

2. Ben oui, tab[i] est une chaine de caractère dans cette méthode, il ne peut être interprété, d'où ma remarque dans mon post précédent.

+ la méthode est donc bonne, mais ton parcours de tableau ne l'est pas. Cette erreur montre clairement que tu essaies d'accéder à un élément en-dehors de ton tab. Là je peux pas plus t'aider sans avoir le reste du code (quand tu remplis ton tab, de quelle manière ...)
0
dounatt Messages postés 45 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 3 février 2014
8 févr. 2012 à 17:30
Bonjour, voila mon code:

.............
String[]tab=new String[nb];
String[]tab1=new String[nb1];
String tt;
String tt1;
int[][]matrice=new int[nb1][nb];

for (int i=0;i <tab1.length;i++){
for (int j=0;j <tab.length;j++){
for (int z=0;z <nb2;z++){
tt1=tab1[i];
r31=stm.executeQuery("SELECT objet FROM appels WHERE objet= "+tab1[i]);
while (r31.next()){
Z1.add(r31.getString("objet"));
}
if (!Z1.isEmpty()){matrice[i][j]=1;}

}}}
................


Dans cette partie du code, j'essaie de comparer les valeurs de la colonne 'objet' de type VARCHAR, avec les éléments du tableau de type String.
0

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

Posez votre question
dounatt Messages postés 45 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 3 février 2014
8 févr. 2012 à 20:29
Merciiiiiiiiiiiiiiiiiiii, merci beaucoup jopop

r31=stm.executeQuery("SELECT objet FROM appels WHERE objet like '"+tab[i]+"'");
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
9 févr. 2012 à 08:03
De rien ;)
0
Rejoignez-nous