Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut Problème insertion SQL avec Java

    Bonjour,

    J'ai crée un formulaire avec java comprenant des Jtextfields et un JComboBox. J'ai essayé de faire un INSERT INTO en mettant des valeurs que j'ai définis par moi-même et ça marche. MAIS lorsque je veux insérer les valeurs saisis en remplissant le formulaire, ça ne marche pas. J'ai fouillé un peu partout sur le web mais je ne vois rien.

    Je vous mets le code et merci pour votre aide.
    Code :
    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
     
    btnAccept = new JButton("Accept");
    		btnAccept.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				Connection conn = null;
     
    		        String s1 = email.getText();
    		        String s2 = password.getText();
    		        String s3 = access_level.getText();
    		        Object s4 = condition.getSelectedItem();
     
    		        try{
    				 String userName = "root";
    			     String password = "root";
    			     String server = "localhost:3306";
    			     String db="request";
    			     String url = "jdbc:mysql://"+server+"/"+db;
    			     Class.forName ("com.mysql.jdbc.Driver").newInstance ();
    			     conn = (Connection) DriverManager.getConnection (url, userName, password);
    			     System.out.println ("Database connection established");
    			     java.sql.Statement statement = conn.createStatement();
    			     statement.executeUpdate("INSERT INTO 'log_connect_firm' ('email' ,'password' , 'access_level' , 'condition' ) VALUES ('"+s1+"','"+s2+"', '"+s3+"', '"+s4+"')");
    			     JOptionPane.showMessageDialog(btnAccept, "Données Sauvegardées");
    			     }
     
    		        catch (Exception e1)
    		        {
    		            System.err.println ("Cannot connect to database server");
    		        } 
     
    			     finally
    			        {
     
    			           if (conn != null)
    			            {
    			                    try {
    									conn.close();
    								} catch (SQLException e1) {
    									// TODO Auto-generated catch block
    									e1.printStackTrace();
    								}
    			                    System.out.println ("Database connection terminated");
    			            }
    			        }
     
    		       }

  2. #2
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    Remplace ce bout de code
    Code :
    1
    2
    java.sql.Statement statement = conn.createStatement();
    statement.executeUpdate("INSERT INTO 'log_connect_firm' ('email' ,'password' , 'access_level' , 'condition' ) VALUES ('"+s1+"','"+s2+"', '"+s3+"', '"+s4+"')");
    par ceci
    Code :
    1
    2
    3
    4
    java.sql.Statement statement = conn.createStatement();
    String sql = "INSERT INTO 'log_connect_firm' ('email' ,'password' , 'access_level' , 'condition' ) VALUES ('"+s1+"','"+s2+"', '"+s3+"', '"+s4+"')";
    System.out.println(sql);
    statement.executeUpdate(sql);
    histoire de voir ce que tu essayes d'insérer dans ta base de données.

  3. #3
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut

    Salut,

    J'ai mis le code mais ça ne marche pas. En fait, la connexion avec la base de données est établie mais c'est au niveau de la requête SQL que (apparamment) ça bloque.

  4. #4
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    Le code que je te proposais n'était pas destiné à faire fonctionner l'appli mais à débuguer ta requête.
    Quel est le contenu de la requête SQL ? Cette requête fonctionne-t-elle si tu l'exécute depuis un client mysql ?

  5. #5
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut

    La requête fonctionne lorsque à la place des variables s1, s2, s3 et s4 je mets des valeurs prédéfinis. ça marche également depuis un client Mysql.

  6. #6
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    On va pas y arriver...

    Montre nous ce que l'instruction
    Code :
    System.out.println(sql);
    affiche quand ton insertion ne fonctionne pas. C'est ça qui est intéressant.

  7. #7
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut

    Voilà ce que j'ai:

    Database connection established
    INSERT INTO 'log_connect_firm' ('email' ,'password' , 'access_level' , 'condition' ) VALUES ('abcd@abcd.com','abcd', 'abcd', 'Y')

  8. #8
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    Ok donc on peut voir que la requête est correcte (je craignais des double quotes)

    Tu n'as pas de message
    Database connection terminated
    ? Il est nécessaire de fermer la connexion à la base de données pour que les données soient écrites.

    Juste une idée également, enlève l'appel au JOptionPane pour le moment.

    Enfin je ne saurais trop te recommander d'utiliser un PreparedStatement pour ton insertion
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
          String sql = "INSERT INTO log_connect_firm (email, password, access_level, condition) VALUES (?, ?, ?, ?)";
          final PreparedStatement pStmt = conn.prepareStatement(sql);
     
          pStmt.setString(1, s1);
          pStmt.setString(2, s2);
          pStmt.setString(3, s3);
          pStmt.setString(4, s4);
     
          pStmt.executeUpdate();

  9. #9
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut

    J'avais bien le message que Database connexion était terminé.
    Je essayé le code envoyé et j'ai le message:
    [CITATION]
    Database connection established
    Cannot connect to database server
    Database connection terminated
    [/CITATION]

  10. #10
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    Pour savoir quelle est la cause de l'erreur, remplace
    Code :
    System.err.println ("Cannot connect to database server")
    par et poste la stack trace.

  11. #11
    Nouveau Membre du Club
    Homme Profil pro Lamine
    Étudiant
    Inscrit en
    juin 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Nom : Homme Lamine
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2011
    Messages : 147
    Points : 26
    Points
    26

    Par défaut

    En remplaçant, j'ai eu le message suivant:
    Code :
    1
    2
     
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Erreur de syntaxe près de 'condition) VALUES ('abcd@abcd.com', 'abcd', 'abcd', 'N')' à la ligne 1
    En effet, l'erreur vient de ma part car la colonne de ma table 'log_connect_firm' se nomme 'conditions' et non 'condition' au singulier. Maintenant ça marche nickel. J'ai passé une journée et demi sur le problème.

    Je te remercie pour ton aide et je marque le post comme étant résolu.
    Merci.

  12. #12
    Membre Expert Avatar de muad'dib
    Homme Profil pro Alexandre Langlais
    Architecte technique
    Inscrit en
    janvier 2003
    Messages
    981
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Langlais
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2003
    Messages : 981
    Points : 1 070
    Points
    1 070

    Par défaut

    Ravi de t'avoir aidé

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •