pardon je voulais dire :
String sql = "SELECT name FROM customer WHERE trim(city)='Lausanne'";
pardon je voulais dire :
String sql = "SELECT name FROM customer WHERE trim(city)='Lausanne'";
Salut!
Oui j'y ai pensé pour le 'machaine' mais l'erreur que j'ai ensuite c'est "SQLError : invalid column index". Mais j'ai beau chercher sur google, je ne vois pas ce qui est faux :/
J'ai essayé avec le trim mais ca ne change rien non plus (il me semble que ta synthaxe est juste).
Je sais plus quoi faire, j'ai a peu pres tout essayé, meme réinstallé oracle (je doutais que ça allait changer quoique ce soit mais bon, qui ne tente rien n'a rien)!
et le
t'as essayé ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part setObject(1,tf.getText(),Types.VARCHAR);
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"
Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
Aussi
La j'ai mis le setObject(...,Types.VARCHAR) et le ? entre '?' et j'ai toujours le "invalid column index". Si je laisse le ? à nu et que je garde le setObject, c'est l'autre erreur du network datatype type qui revient.
Alors attends tu veux dire comme ceci ? :
Bon, vu que c'est pas super lisible si on met pas le code, je te propose que je te montre le bout de code tel qu'il est maintenant, et je te laisse corriger :
Code : Sélectionner tout - Visualiser dans une fenêtre à part String sql = "SELECT name FROM customer WHERE city="+tf.getText();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String sql = "SELECT name FROM customer WHERE city="+tf.getText(); try { PreparedStatement ps = dbConnection.prepareStatement(sql); ps.setObject(1,tf.getText(),Types.VARCHAR); ResultSet rs = ps.executeQuery(sql); while (rs.next()) { String name = rs.getString(1); ta.append(name); } }
Je l'aurais fait comme ca :
String sql = "SELECT name FROM customer WHERE city=?"+;
try {
PreparedStatement ps = dbConnection.prepareStatement(sql);
ps.setString(1,tf.getText());
ResultSet rs = ps.executeQuery(sql);
while (rs.next()) {
String name = rs.getString(1);
ta.append(name);
}
}
Pardon :
Code :
String sql = "SELECT name FROM customer WHERE city=?";
try {
PreparedStatement ps = dbConnection.prepareStatement(sql);
ps.setString(1,tf.getText());
ResultSet rs = ps.executeQuery(); // Il faut pas remettre sql
while (rs.next()) {
String name = rs.getString("NAME");
ta.append(name);
}
}
Il faut mettre ton code entre 2 balises [ CODE ]ton code[ /CODE ] (enleves les espaces)
Merci je vais essayer ce que tu me proposes!
Alors oui ca j'ai essayé aussi (eh oui ^^). En fait dans ce cas, le programme ce connecte puis j'ecris quelque chose dans le textfield et j'appuye sur "enter" et la il ne se passe rien jusqu'a ce que j'appuye de nouveau sur "enter" et la j'ai SQLException : Closed Connection... et pourtant j'y ai cru quand j'ai pas vu d'erreur venir s'afficher tout de suite ^^
Par trace tu sous-entends un simple ta.append("hello") par exemple?
Si c'est bien ça, alors non je n'entre pas dans la boucle car il ne m'affiche aucun hello!
-Avec ps.executeQuery() et le ? à nu : il ne se passe rien lorsque j'appuye sur enter (j'ai carrément enlevé les close pour terminer la connection.
-Avec ps.executeQuery() et le '?' : invalid column index.
-Avec ps.executeQuery(sql) et le ? à nu : network datatype error.
-Avec ps.executeQuery(sql) et le '?' : invalid column index.
Dans les cas ou j'ai le invalid column index j'ai tenté comme tu as mis plus haut avec le getString("name") au lieu du getString(1), mais ca ne change rien non plus
Mais je pense pas que mon code soit faux, j'ai l'impression que c'est plutot au niveau interraction java/oracle que j'ai un probleme. Mercredi on va essayer chez un pote pour voir comment ca se comporte sur sa machine.
Si ca se trouve ton premier cas marche, mais ton select ne te retourne rien.
Essaye avec le trim ... Sinon j'ai plus trop d'idée
Le trim ne marche pas non plus :/. Est-ce que je peux te demander les versions de ton oracle, jdk et driver jodbc? Peut etre qu'en prenant une autre version du jdk (j'ai 1.6 la)...
Pour java, j'utilise les versions 1.4.1_07, 1.4.2_04, 1.4.2_07 et 1.5.
J'ai plusieurs projets en cours d'ou cette diversité. J'ai oracle 8 et 9i. Pour le driver, j'utilise le même que toi.
Ok merci, j'essayerai demain avec une autre version du jdk.
Sinon sur oracle j'ai trouvé que pour le "invalid column index" (http://www.oracle.com/technology/pub...rx_spring.html), que cette erreur provient du driver JDBC et que ce n'est pas la requete qui la provoque (si je comprends bien, voir le tableau en milieu de page).
BON!
Ca avance à petit pas...
premiere chose, il fallait que j'ecrive :
et non pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part ResultSet rs = ps.executeQuery();
Comme tu le disais ggounouman! J'evite maintenant l'erreur du network datatype . Toutefois je reste bloqué car quoique je fasse, je ne parvient pas à recuperer quoique ce soit avec un prepareStatement, que je recupere ce qu'entre l'utilisateur (ps.setString(1,tf.getText())) ou que j'ecrive quelque chose du genre ps.setString(1,"Geneve")
Code : Sélectionner tout - Visualiser dans une fenêtre à part ResultSet rs = pstmt.executeQuery(sql);
Par contre j'ai decouvert une chose...si je met comme requete :
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part "SELECT ? FROM customer WHERE city='Geneve'"
Et que je rentre "name" dans le textField, j'arrive enfin à rentrer dans la boucle while et j'ai comme output :
Code : Sélectionner tout - Visualiser dans une fenêtre à part "SELECT name FROM customer WHERE city=?"
Ce qui est juste dans le sens ou j'ai bien 3 entrées dans la table customer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 hello name hello name hello name
Si j'utilise un statement normal (createStatement()) le programme me sors bien les resultats dont j'ai besoin...
Une idée quelqu'un? J'ai passé tellement de temps à tout essayer (avec setObject aussi) et rien ne semble fonctionner!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager