IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Probleme avec preparedStatement : "no row count was produced"


Sujet :

JDBC Java

  1. #21
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    pardon je voulais dire :
    String sql = "SELECT name FROM customer WHERE trim(city)='Lausanne'";

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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)!

  3. #23
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    et le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setObject(1,tf.getText(),Types.VARCHAR);
    t'as essayé ??
    "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/

  4. #24
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    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)!
    Ok, essaye de mettre le nom de ta colonne dans le getString à la place de l'index.
    .geString("NAME")
    car j'ai l'impression que ton index 1 est un nombre.

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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.

  6. #26
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    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.
    Tu as essayé de laissé le ? à nu et passé ta chaine avec '' :
    du type
    String maChaine = "'"+"text.getText()+"'";

  7. #27
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    Alors attends tu veux dire comme ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String sql = "SELECT name FROM customer WHERE city="+tf.getText();
    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
    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);
    				}
                  }

  8. #28
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    Alors attends tu veux dire comme ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String sql = "SELECT name FROM customer WHERE city="+tf.getText();
    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
    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(); // il faut pas remettre sql
    				
    				while (rs.next()) {
    					String name = rs.getString("NAME");
    					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);
    }
    }

  9. #29
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    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);
    }
    }

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    Il faut mettre ton code entre 2 balises [ CODE ]ton code[ /CODE ] (enleves les espaces)

    Merci je vais essayer ce que tu me proposes!

  11. #31
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    Il faut mettre ton code entre 2 balises [ CODE ]ton code[ /CODE ] (enleves les espaces)

    Merci je vais essayer ce que tu me proposes!
    Oui,
    Merci, je débute sur developpez.net.

  12. #32
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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 ^^

  13. #33
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    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 ^^
    Met une trace dans ta boucle while pour vérifier si tu rentre dedans ou pas, sinon ne ferme pas ta connexion à la fin de ta fonction. Ferme là juste à fermeture de ton programme.

  14. #34
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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.

  15. #35
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    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.
    Ok.
    En fait j'ai plusieurs programme comme le tient et j'ai pas eu de problème.
    Dans mon cas, j'ai plutot un 4ème cas :

    Avec ps.executeQuery() et le ? à nu

  16. #36
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    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

  17. #37
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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)...

  18. #38
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 61
    Points
    61
    Par défaut
    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.

  19. #39
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    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).

  20. #40
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 11
    Points
    11
    Par défaut
    BON!

    Ca avance à petit pas...

    premiere chose, il fallait que j'ecrive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = ps.executeQuery();
    et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = pstmt.executeQuery(sql);
    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")

    Par contre j'ai decouvert une chose...si je met comme requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ? FROM customer WHERE city='Geneve'"
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT name FROM customer WHERE city=?"
    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
    1
    2
    3
    4
    5
    6
    7
     
    hello
    name
    hello
    name
    hello
    name
    Ce qui est juste dans le sens ou j'ai bien 3 entrées dans la table customer...

    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!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. probleme avec un PreparedStatement
    Par steph60 dans le forum JDBC
    Réponses: 3
    Dernier message: 06/10/2006, 11h45
  2. probleme avec le type LONG ROW
    Par amigauss dans le forum SQL
    Réponses: 10
    Dernier message: 21/09/2006, 10h29
  3. [text] probleme avec simple quote
    Par bor1s dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/12/2005, 16h03
  4. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16
  5. Réponses: 2
    Dernier message: 30/08/2004, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo