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 :

Requête SQL ne veut pas passer depuis Java vers Mysql


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Faculté des Sciences et Téchniques
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Faculté des Sciences et Téchniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut Requête SQL ne veut pas passer depuis Java vers Mysql
    Bonjour à vous. Je voudrai exécuter des requêtes depuis une application Java vers Mysql (Wamp server).

    Pour cela, j'ai téléchargé le fichier Jar de Mysql que j'ai ajouté dans mon application, puis j'ai copié ce Jar dans le dossier java\bin enfin j'ai créé la variable d'environnement qui référence le chemin où j'ai copié ce Jar. Mais quand j'exécute le code, j'ai l'erreur suivante :


    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Erreur de syntaxe près de 'INSERT INTO conjoint ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP,' à la ligne 1
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.Util.getInstance(Util.java:408)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2480)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2438)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)

    Est ce que quelqu'un peut m'aider s'il vous plait

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Erreur de syntaxe près de 'INSERT INTO conjoint ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP,' à la ligne 1
    Sans le code qui génère cette requête, difficile de vous répondre.
    Et la question concernera, à mon avis, davantage le forum Java que le forum MySQL mais attendons de voir la requête quand même...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut à tous.

    En ce qui concerne Java, non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Erreur de syntaxe près de 'INSERT INTO conjoint ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP,' à la ligne 1
    Sans la requête, telle que vous l'avez écrite, il nous est difficile de répondre à votre question.

    Voir la syntaxe de l'insert : https://dev.mysql.com/doc/refman/5.7/en/insert.html

    @+

  4. #4
    Membre averti
    Homme Profil pro
    Faculté des Sciences et Téchniques
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Faculté des Sciences et Téchniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut
    Désolé de ne pas avoir posté le code de la requête. Le voici :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
               Connection con = null; 
               Statement st = null;
               ResultSet rs = null;
     
               try{
                   Class.forName("com.mysql.jdbc.Driver");
                   }catch(ClassNotFoundException cnfe){ 
                   System.out.println("La classe com.mysql.jdbc.Driver n'a pas été trouvée"); 
                   cnfe.printStackTrace();} 
     
               try {
                   con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false","root","");
                   st = con.createStatement();
                   String rq = ("INSERT INTO 'conjoint' ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP, Matricule_Conjoint ) VALUES ('"+Matricule+"', '"+Nom_Conjoint+"', '"+Prenom_Conjoint+"', '"+Matricule_Conjoint+"');");
     
                   st.executeUpdate(rq);
                   System.out.println("Insertion du conjoint réussite !!!!");
                } catch ( Exception ex ) { ex.printStackTrace(); }
            finally{
                        if(rs != null) 
                           {
                                System.out.println("Fermeture de l'objet ResultSet.");
                                try{ 
                                      rs.close(); }
                                catch ( SQLException ignore ) 
                                { System.out.println("Resultset ne peut pas être ignoré."); }
                           }
                        if(st != null) 
                           {
                                System.out.println("Fermeture de l'objet Statement.");
                                try { 
                                       st.close(); } 
                                catch ( SQLException ignore ) {  }
                           }
                        if(con != null) 
                           {
                               try{ System.out.println( "Fermeture de l'objet Connection." );
     
                                    con.close(); } 
                               catch ( SQLException ignore ) { }
                           }
                   }

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    A priori, la requête semble correcte.
    Reste à savoir si Matricule, Nom_Conjoint, Prenom_Conjoint, Matricule_Conjoint sont valorisés.

    Mais...
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    String rq = ("INSERT
    Une variable String qui commence par une parenthèse, c'est pas un peu bizarre ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre averti
    Homme Profil pro
    Faculté des Sciences et Téchniques
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Faculté des Sciences et Téchniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Par défaut
    Merci pour ta réponse CinéPhile c'était bel et bien l'une des erreurs. Après correction ça me donne l'erreur suivante :

    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
    35
    36
    37
    38
    39
    40
    41
    Le serveur a reçu Matricule= et  Nom_Conjoint= et  Prenom_Conjoint= et  Matricule_Conjoint=
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Erreur de syntaxe près de ''conjoint' ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP, Matricule' à la ligne 1
    Fermeture de l'objet Statement.
    Fermeture de l'objet Connection.
    Fermeture de l'objet Statement.
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    Fermeture de l'objet Connection.
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    	at com.mysql.jdbc.Util.getInstance(Util.java:408)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2480)
    	at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)
    	at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)
    	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)
    	at bcp_server.Requettes_Sql_Insertion_BD.Ajout_Conjoint(Requettes_Sql_Insertion_BD.java:46)
    	at bcp_server.ServerThread.run(ServerThread.java:53)
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Erreur de syntaxe près de ''conjoint' ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP, Matricule' à la ligne 1
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    	at com.mysql.jdbc.Util.getInstance(Util.java:408)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2480)
    	at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)
    	at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)
    	at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)
    	at bcp_server.Requettes_Sql_Insertion_BD.Ajout_Conjoint(Requettes_Sql_Insertion_BD.java:46)
    	at bcp_server.ServerThread.run(ServerThread.java:53)
    En faite, je travail sur un architecture Client/Serveur où ce Client communique des données avec le Serveur à travers un Socket, ensuite le Serveur doit faire des traitements avec la base de données Mysql installée sur le serveur lui même.

    Voici le code qui me permet d'exécuter la requête depuis le serveur avec les paramètres données comme paramètres:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public static void Ajout_Conjoint(String Matricule, String Nom_Conjoint, String Prenom_Conjoint, String Matricule_Conjoint){                       
               Connection con = null; 
               Statement st = null;
               ResultSet rs = null;
     
               try{
                   Class.forName("com.mysql.jdbc.Driver");
                   }catch(ClassNotFoundException cnfe){ 
                   System.out.println("La classe com.mysql.jdbc.Driver n'a pas été trouvée"); 
                   cnfe.printStackTrace();} 
     
               try {
                   con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false","root","");
                   st = con.createStatement();
                   String rq = "INSERT INTO 'conjoint' ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP, Matricule_Conjoint ) VALUES ('"+Matricule+"', '"+Nom_Conjoint+"', '"+Prenom_Conjoint+"', '"+Matricule_Conjoint+"');";
                   //rs = st.executeUpdate("INSERT INTO 'conjoint' ( Matricule, Nom_Conjoint, Prenom_Conjoint, Travail_Sur_BP, Matricule_Conjoint ) VALUES ('"+Matricule+"', '"+Nom_Conjoint+"', '"+Prenom_Conjoint+"', '"+Matricule_Conjoint+"');");         
                   st.executeUpdate(rq);
                   System.out.println("Insertion du conjoint réussite !!!!");
                } catch ( Exception ex ) { ex.printStackTrace(); }
            finally{
                        if(rs != null) 
                           {
                                System.out.println("Fermeture de l'objet ResultSet.");
                                try{ 
                                      rs.close(); }
                                catch ( SQLException ignore ) 
                                { System.out.println("Resultset ne peut pas être ignoré."); }
                           }
                        if(st != null) 
                           {
                                System.out.println("Fermeture de l'objet Statement.");
                                try { 
                                       st.close(); } 
                                catch ( SQLException ignore ) {  }
                           }
                        if(con != null) 
                           {
                               try{ System.out.println( "Fermeture de l'objet Connection." );
     
                                    con.close(); } 
                               catch ( SQLException ignore ) { }
                           }
                   }
        }
    et voici comment j'appelle cette fonction dans le main en faisant un petit teste sur le premier champs envoyé depuis le client vers le serveur qui me permet de décider quelle requête utiliser :
    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
    35
    36
    37
    public class ServerThread extends Thread{
        String message=null;
        Socket socket;
    //---- Attributs relatives au Conjoint----//    
        private String Matricule;
        private String Nom_Conjoint;
        private String Prenom_Conjoint;
        private int TravailBP;
        private String Matricule_Conjoint;
            public void run(){
            try{
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));              
                    while((message = bufferedReader.readLine()) != null)
                        {
                            System.out.println("Incoming Client message: "+ message);
        //--------------CODE FONCTIONEL POUR DECOUPER LE MESSAGE ENVOYE PAR LE CLIENT----------------------------//                    
                            String Parts[] = message.split(",");
                            System.out.println("Je suis Parts[0]"+Parts[0]);
                            if(":1".equals(Parts[0]))  //Teste sur quelle requête utiliser
                                {
                                    for(int i = 0; i < Parts.length; i++)   // Boucle pour récupérer les variables envoyés depuis le client
                                        { System.out.println("---->"+Parts[i]); 
                                          Matricule = Parts[1];
                                          Nom_Conjoint = Parts[2];
                                          Prenom_Conjoint = Parts[3];
                                          Matricule_Conjoint = Parts[4];
     
                                          //System.out.println("La vérification de la "+i+"éme ligne s'est exécutée !!!!!");                                     
                                        }
                                    System.out.println("Le serveur a reçu"+ Matricule+" et "+Nom_Conjoint+" et "+Prenom_Conjoint+" et "+Matricule_Conjoint);
     
                                    Requettes_Sql_Insertion_BD.Ajout_Conjoint(this.Matricule=Matricule, this.Nom_Conjoint=Nom_Conjoint, this.Prenom_Conjoint=Prenom_Conjoint, this.Matricule_Conjoint=Matricule_Conjoint);
                                }                           
                        }
                    //socket.close();
            }catch (IOException e){e.printStackTrace();}
        }
    Je ne sais vraiment plus ou donner ma tête

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String rq = "INSERT INTO 'conjoint'
    Retirez les apostrophes autour du nom de la table !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [PDO] Une requête SQL ne veut pas s'exécuter
    Par Francky44003 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/11/2012, 11h55
  2. Réponses: 2
    Dernier message: 25/08/2010, 17h50
  3. Pourquoi cette requête SQL ne marche pas toujours
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 14/12/2006, 17h29
  4. requetes qui ne veut pas passer
    Par suya95 dans le forum Requêtes
    Réponses: 14
    Dernier message: 04/07/2006, 14h17

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