Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Persistance
Persistance Forum d'entraide pour la persistance en Java : base de donnée, xml, mapping orienté objet, ... Posez vos questions sur iBatis, JDO, XmlBeans, Castor, JAXB, XStream, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/10/2012, 00h47   #1
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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");
			            }
			        }
 
		       }
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 02h28   #2
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
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.
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 12h28   #3
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 12h31   #4
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
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 ?
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 12h42   #5
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 12h53   #6
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
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.
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 12h59   #7
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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')
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 13h08   #8
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
Ok donc on peut voir que la requête est correcte (je craignais des double quotes)

Tu n'as pas de message
Citation:
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();
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 13h21   #9
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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]
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 13h25   #10
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
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.
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 13h38   #11
lemzo84
Membre à l'essai
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 120
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 : 120
Points : 23
Points : 23
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.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2012, 14h58   #12
muad'dib
Membre Expert
 
Avatar de muad'dib
 
Homme Alexandre Langlais
Architecte technique
Inscription : janvier 2003
Messages : 927
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Langlais
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

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

Informations forums :
Inscription : janvier 2003
Messages : 927
Points : 1 092
Points : 1 092
Envoyer un message via Skype™ à muad'dib
Ravi de t'avoir aidé
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h03.


 
 
 
 
Partenaires

Hébergement Web