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 :

SQLException erreur incompréhensible !?! pour moi


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut SQLException erreur incompréhensible !?! pour moi
    Bonjour,

    Avançant dans ma compréhension du java et de ses liens avec les bdd, je tombe sur une erreur dont je ne comprends pas l'origine.

    Dans le code ci-dessous, j'obtiens une erreur SQLException. Je m'en suis apperçu grâce au "System.out.println("SQLException dans RecBdd");" (ligne 58) que j'ai mis en place.
    Je ne comprends pas d'où peut provenir cette erreur car le tuto suivi qui explique l'insertion de données dans une database a été strictement respecté !?!
    J'ai lu que les SQLExceptions peuvent provenir d'une mauvaise connection ou d'une erreur dans la requête mais là, la connexion à l'air bonne et la requête aussi (à en juger par les messages que j'obtiens dans la fenêtre de sortie de NetBeans et à en juger par le tuto d'où j'ai recopié la requête ) ....

    voici le code :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    /**
     *
     * @author francky
     */
    public class RecBdd 
    {
        public RecBdd()
        {
     
            // Variables relatives à la connexion à la base de données
            String url = "jdbc:mysql://localhost:3306/bdd_sdzee";
            String utilisateur = "java";
            String motDePasse = "SdZ_eE";
            Connection connexion = null;
            //Statement statement = null;
            ResultSet resultat = null;
     
            //chargement du pilote
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("chargement pilote");
            }
            catch (ClassNotFoundException e)
            {
                System.out.println("erreur ClassNotFoundException e");
            }
     
            //Connection à la base de données
            try
            {
                System.out.println("connexion BDD");
                connexion = DriverManager.getConnection( url, utilisateur, motDePasse );
            }
            catch (SQLException e)
            {
                System.out.println("SQLException erreur");
            }
     
            //commandes SQL
            try
            {
                //création de l'objet gérant les requêtes
                Statement statement = connexion.createStatement();
     
                // Exécution d'une requête d'écriture
                int statut = statement.executeUpdate("INSERT INTO Utilisateur(email, mot_de_passe, nom, date_inscription) VALUES ('new@mails.be', MD5('passpass'), 'Tonton', NOW()");
                System.out.println("enregistrement effectué ???? statut : " + statut);
            }
            catch (SQLException e)
            {
                System.out.println("SQLException dans RecBdd");
            }
     
            finally
            {
                if ( connexion != null )
                    try 
                    {
                        // Fermeture de la connexion
                        System.out.println("fermeture connexion dans RecBdd !?!");
                        connexion.close();
                    }
                    catch ( SQLException ignore )
                    {
                        // Si une erreur survient lors de la fermeture, il suffit de l'ignorer.
                    }
            }    
     
        }
    }
    et voici ce que j'obtiens en fenêtre de sortie de NetBeans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    chargement pilote
    connexion BDD
    SQLException dans RecBdd
    fermeture connexion dans RecBdd !?!
    enregistrement normalement effectué ....
    Il faut aussi dire que j'appelle cette RecBdd depuis un autre fichier java dont le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if (commande.equals("Enregistrer"))
            {
                RecBdd recBdd = new RecBdd();
                System.out.println("enregistrement normalement effectué ....");
            }
    Voilà, j'espère avoir été clair !?!
    OS : LinuxMint 20

  2. #2
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Bonjour,

    Plutôt que d'afficher des messages qui ne donne aucune infos sur l'erreur, il faudra déjà commencer par afficher la trace d'erreur de l'exception.
    Pour cela il suffit de remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("SQLException dans RecBdd");
    par :

    Ça aidera déjà à se faire une idée plus précise du problème rencontré.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Salut !

    Après modification proposée, voici le message d'erreur qui apparaît dans la fenêtre de sortie de NetBeans : il semblerait qu'il y ait une erreur de syntaxe mais même sur le site officiel de sql, j'ai vu que ma syntaxe à l'air bonne !?!

    De plus, dans NetBeans, à la ligne où j'ai ajouté "e.printStackTrace();", j'ai un avertissement qui dit ceci "Throwable.PrintStackTrace show be removed" ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chargement pilote
    connexion BDD
    SQLException requête dans RecBdd
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    fermeture connexion dans RecBdd !?!
    enregistrement normalement effectué ....
    OS : LinuxMint 20

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    il faut utiliser un preparedStatement avec parametres

    Eric

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    C'était donc une parenthèse manquante .....
    C'est dingue pourtant je pensais avoir bien vérifié !

    OS : LinuxMint 20

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

Discussions similaires

  1. Xcode - erreur incompréhensible (pour moi ^^)
    Par JeeWee dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 08/12/2008, 13h33
  2. Erreur incompréhensible pour un neophyte
    Par josalco dans le forum Web
    Réponses: 5
    Dernier message: 23/03/2007, 14h35
  3. Réponses: 4
    Dernier message: 07/04/2006, 16h30

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