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

Persistance des données Java Discussion :

Problème insertion SQL avec Java


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    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 : 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
     
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Remplace ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    On va pas y arriver...

    Montre nous ce que l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(sql);
    affiche quand ton insertion ne fonctionne pas. C'est ça qui est intéressant.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Pour savoir quelle est la cause de l'erreur, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.err.println ("Cannot connect to database server")
    par et poste la stack trace.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Points : 79
    Points
    79
    Par défaut
    En remplaçant, j'ai eu le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Ravi de t'avoir aidé

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

Discussions similaires

  1. Problème insertion SQL d'un contenu RichTextBox
    Par Jordel dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/08/2007, 11h04
  2. Problème utilisation OrdImage avec java et servlet
    Par Shouill dans le forum Oracle
    Réponses: 1
    Dernier message: 23/03/2007, 17h23
  3. SQL avec JAVA
    Par Madame_de_Fontenay dans le forum Installation
    Réponses: 5
    Dernier message: 09/01/2007, 20h12
  4. Problème de date avec JAVA & Oracle
    Par bobic dans le forum JDBC
    Réponses: 2
    Dernier message: 02/11/2006, 13h21
  5. Probléme Insert sql dynamique
    Par Xavier2701 dans le forum Oracle
    Réponses: 10
    Dernier message: 26/09/2006, 18h32

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