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

JDBC Java Discussion :

Problème insertion base de données Mysql


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2015
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Problème insertion base de données Mysql
    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

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il y a 15 '?' , mais tu ne passe que 14 paramètres. Soit tu passe un Id comme premier paramètre, soit tu le retire de la liste des paramètres. Mais tu ne peux pas juste l'ignorer

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2015
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Il y a 15 '?' , mais tu ne passe que 14 paramètres. Soit tu passe un Id comme premier paramètre, soit tu le retire de la liste des paramètres. Mais tu ne peux pas juste l'ignorer
    Au temps pour moi j'avais fais des modifications pour tester avec l'id en plus mais ça ne fonctionnait pas. Le code est donc :

    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
    String query = "INSERT INTO Transactions (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);
     
                        boolean ret = statement.execute(query);
    Et ça ne fonctionne donc pas :/

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     boolean ret = statement.execute(query);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nb = statement.executeUpdate();
    A+.

Discussions similaires

  1. Problème accents base de données MYSQL
    Par Invité dans le forum Débuter
    Réponses: 5
    Dernier message: 09/02/2016, 08h07
  2. Probléme insertion base de donnée Access
    Par Seb2913 dans le forum C#
    Réponses: 1
    Dernier message: 26/04/2015, 10h45
  3. Problème connexion base de données MySQL avec VB.net
    Par fridrai dans le forum Administration
    Réponses: 3
    Dernier message: 28/05/2013, 18h59
  4. Réponses: 2
    Dernier message: 02/09/2010, 09h59
  5. Réponses: 7
    Dernier message: 01/12/2009, 15h10

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