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 :
L'id est auto-incrémenté.
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
Merci d'avance pour le coup de main qui vous pourriez m'apporter.
Benoit
Partager