Insertion des données dans une base MySQL

Résolu
Bonjour,
je veux ajouter des données à ma base MySQL en utilisant le langage java mais le code ne marche plus.
voici le code
package com.controle.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class connection {
public static void main(String[] args) {
String url = "com.mysql.jdbc.Driver";
Connection con = null ;
Statement s = null;
try {

System.out.println("Connection au driver JDBC");
//moyPaiement=txtmoy.getSelectedText();
Class.forName(url).newInstance();
System.out.println("Chargement du pilote Mysql réussi");

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/base1","aidi","aidi");
//insertion
s = con.createStatement();
String str = "INSERT INTO utilisateur(id,email,mot_de_passe,nom,date_inscription) VALUES (3,'user3@ensi.com', MD5('password3'), 'user3', NOW());)" ;
s.executeUpdate(str);
//System.out.println(str+" ligne insérée");
}
catch(Exception e) {System.out.println("Exception");}
finally {
if ( s != null ) {
try {
con.close();
} catch ( SQLException ignore ) {
}
if ( con != null ) {
try {
con.close();
} catch ( SQLException ignore ) {
}
}}
}}}
a console affiche :
Connection au driver JDBC
Chargement du pilote Mysql réussi
Exception

merci de m'aider.

6 réponses

  1. Contributeur
    Bonjour,

    D'où ça sort les ";" dans des parenthèses?

    Au lieu de :

    "INSERT INTO utilisateur(id,email,mot_de_passe,nom,date_inscription) VALUES (3,'user3@ensi.com', MD5('password3'), 'user3', NOW());)"

    Mettre :

    "INSERT INTO utilisateur(id,email,mot_de_passe,nom,date_inscription) VALUES (3,'user3@ensi.com', MD5('password3'), 'user3', NOW())"

    EDIT : Oups c'est déjà ce qui est donné par Chocobo.
    Je suis du même avis et ça ne devrait pas planter. SInon ce n'est pas la même erreur..


    Le loup, solitaire et mystérieux.
    1. essaie
      "INSERT INTO utilisateur(id,email,mot_de_passe,nom,date_inscription) VALUES (3,'user3@ensi.com', MD5('password3'), 'user3', NOW())" 

      au lieu de
      "INSERT INTO utilisateur(id,email,mot_de_passe,nom,date_inscription) VALUES (3,'user3@ensi.com', MD5('password3'), 'user3', NOW());)"
      1. voilà l'erreur
        Connection au driver JDBC
        Chargement du pilote Mysql réussi
        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)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
        at com.controle.test.connection.main(connection.java:24)
        et merci de m'aider
        1. bonjour,

          Commence par remplacé le

          catch(Exception e) {System.out.println("Exception");} 

          par
          catch(Exception e) {e.printStackTrace( );} 


          et les
          catch ( SQLException ignore ) { }

          par
          catch(SQLException sqle) {sqle.printStackTrace( );} 


          et poste ce que t'affiches la console java