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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut Probleme avec preparedStatement : "no row count was produced"
    Salut les gens!

    Alors voila, un p'tit soucis auquel j'arrive pas a remedier. J'ai du creer un petite application avec une interface graphique ou un utilisateur peut entrer un mot/chiffre/etc dans un textfield, ce mot/chiffre est recupéré dans un preparedStatement pour ensuite afficher les resultat dans un textArea. Y'a aussi un bouton qui permet de se connecter a la base. En bref, c'est un truc tout bete

    Voila le bout de code ou se trouve la partie sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    ...
    private Connection dbConnection;
    ...
    public void actionPerformed(ActionEvent ae)  {
     
    		if (ae.getSource().equals(b)) {
     
    			try {
    				Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    				dbConnection = DriverManager.getConnection("jdbc:odbc:memoire", "system","h3ll0");
    				ta.append("Connected to DataBase! You can now enter your query.");
    			}
     
    			catch (Exception e ){
    				ta.append("Error : "+e);
    			}
    		}
     
    		if (ae.getSource().equals(tf)) {
     
    			try {
    			String sqlquery = "SELECT name FROM customer WHERE city=?";
    			PreparedStatement ps = dbConnection.prepareStatement(sqlquery);
    			ps.setString(1,tf.getText());
    			ps.executeUpdate();
    			dbConnection.close();
    			}
    			catch (SQLException sqle) {
    				ta.append(newline+"Error : "+sqle);
    			}
     
    		}
    	}
    Donc rapidement : un clic sur le bouton "b" permet de se connecter a la BD (ca c'est bon aucun soucis). Le probleme c'est au niveau du textField, j'ai crée un preparedStatement bidon avec un petite base de donnée bidon (clients/fournisseur le truc habituel :p ). Donc lorsqu'on entre une ville dans le textField, le string est recupéré avec le getText() et envoyé dans la requete pour sortir le résultat, mais c'est la ou y'a un os : le programme me renvoie sans arret "no row count was produced"...? J'ai suivit le bon tuto dans la faq tout ca et cherché sur google pour une solution mais j'ai reçu tres peu de resultats dans la recherche si ce n'est qu'il faudrai potentiellement que j'utilise un ResultSet mais je sais pas trop quoi ecrire dedans :p

    Parmis le peu de choses que j'ai trouvé, y'avait notamment d'utiliser ps.updateQuery(sqlquery) mais la j'ai l'erreur que mon driver ne supporte pas cette fonction.

    Sincèrement désolé si ma question est stupide ou si la réponse est simple, mais je débute encore avec jdbc

    Voila un ptit screen de l'interface et du probleme

    Merci d'avance pour vos réponses!


  2. #2
    in
    in est déconnecté
    Membre Expert 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
    Par défaut
    Citation Envoyé par spl0tch Voir le message
    ...si ce n'est qu'il faudrai potentiellement que j'utilise un ResultSet ...
    c'est clair !

    le resultSet te sers à parcourir le résultat d'une requete.

    De plus le executeUpdate te renvoie un int qui correspond au nombre de lignes modifiées par ta requete de type update, insert,delete ... -> Il faut lire la javadoc !!

    Tu devrais jeter un coup d'oeil à cet exemple de la FAQ pour utiliser un ResultSet

    Modifie ton code et si ça ne marche pas, on est là ...

  3. #3
    Membre expérimenté Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Par défaut
    ps.executeUpdate(); pour un SELECT.

    executeQuery me parait mieux

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    Ah merci pour les réponses super rapides

    Je vais parcourir un peu les liens que tu m'as passé in, si ca marche pas je vous dirai!

    merci encore!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    Alors j'ai tenté la chose suivante, le code devrai etre correct il me semble (bon mis a part l'affichage des resultats qui sera moche mais ca osef pour le moment :p) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ResultSet rs = ps.executeQuery(sql);
     
    				while (rs.next()) {
    					String name = rs.getString(1);
    					ta.append(name);
    				}
    Mais l'erreur qui survient maintenant c'est java.sql.SQLException: Driver does not support this function...faut il mettre le driver a jour ou ajouter un bout de code pour lui ajouter des fonctionnalités?

    J'ai en fait deja utilisé un resultSet y'a quelques temps pour tester une connection a ma bd oracle avec un requete toute simple et la je n'avais aucune probleme. Bizarre bizarre...la j'avoue que je suis bloqué, une idée de génie quelqu'un?

  6. #6
    in
    in est déconnecté
    Membre Expert 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
    Par défaut
    Sur quelle ligne tu as l'erreur ? (tu peux obtenir la trace de l'exception en utilisant printStackTrace)

    C'est quoi ta base de donnée ? et le driver que tu utilises ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut
    hello,

    Ma base de données c'est oracle 10.2.0 et j'utilise le driver sun.jdbc.odbc.JdbcOdbcDriver

    Alors avec le printStackTrace il me situe l'erreur à la ligne 70 la ou j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultSet rs = ps.executeQuery(sql);
    (ps c'est le preparedStatement).

    Voila tout ce qu'il me print avec le StackTrace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    java.sql.SQLException: Driver does not support this function
    	at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(Unknown Source)
    	at UserInterface.actionPerformed(UserInterface.java:70)
    	at javax.swing.JTextField.fireActionPerformed(Unknown Source)
    	at javax.swing.JTextField.postActionEvent(Unknown Source)
    	at javax.swing.JTextField$NotifyAction.actionPerformed(Unknown Source)
    	at javax.swing.SwingUtilities.notifyAction(Unknown Source)
    	at javax.swing.JComponent.processKeyBinding(Unknown Source)
    	at javax.swing.JComponent.processKeyBindings(Unknown Source)
    	at javax.swing.JComponent.processKeyEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
    	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
    	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
    	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
    	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Ca fait peur :p...

+ Répondre à la discussion
Cette discussion est résolue.

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