Bonjour à tous,

J'ai un petit problème j'essaie de faire des insertions dans une base de données Mysql en utilisant JDBC mais je n'y arrive pas.
Etonnamment lorsque je récupère la requête SQL grâce à ((JDBC4PreparedStatement) statement).asSql() et que je tape la requête directement dans mysql, ça fonctionne.
Sinon ça me lance une exception : 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

Voici le bout de code qui fait l'insertion :

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
String query = "INSERT INTO Transactions (Id, Date, Montant, Carte, DateTx, TermId, Serial, Origine, TypeCarte, Frais, Net, FlagOk, DateHeureTx, created_at, updated_at) " +
                            "VALUES (?, ? ,? ,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
 
                    statement = mainForm.getConn().prepareStatement(query);
 
                    statement.setObject(1,date, Types.DATE);
                    statement.setObject(2,montant, Types.DECIMAL);
                    statement.setObject(3,carte, Types.VARCHAR);
                    statement.setObject(4, dateTx, Types.VARCHAR);
                    statement.setObject(5,termId, Types.VARCHAR);
                    statement.setObject(6,serial, Types.VARCHAR);
                    statement.setObject(7,origine, Types.INTEGER);
                    statement.setObject(8, typeCarte, Types.VARCHAR);
                    statement.setObject(9,0, Types.DECIMAL);
                    statement.setObject(10,0, Types.DECIMAL);
                    statement.setObject(11,flagOk, Types.TINYINT);
                    statement.setObject(12,dateHeureTx, Types.DATE);
                    statement.setObject(13,created_at, Types.TIMESTAMP);
                    statement.setObject(14,updated_at, Types.TIMESTAMP);

Concernant la table, voici sa composition :
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
`Id` bigint(20) NOT NULL,
  `Date` date NOT NULL,
  `Montant` decimal(10,2) NOT NULL,
  `Carte` varchar(80) NOT NULL,
  `DateTx` varchar(25) NOT NULL,
  `TermId` varchar(50) NOT NULL,
  `Serial` varchar(50) DEFAULT NULL,
  `Origine` int(11) NOT NULL,
  `TypeCarte` varchar(50) NOT NULL,
  `Frais` decimal(10,2) NOT NULL,
  `Net` decimal(10,2) NOT NULL,
  `FlagOk` tinyint(1) DEFAULT NULL,
  `DateHeureTx` datetime NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
L'id est auto-incrémenté.

Merci d'avance pour le coup de main qui vous pourriez m'apporter.

Benoit