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 :

[MySQL] Erreur commande "INSERT INTO"


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [MySQL] Erreur commande "INSERT INTO"
    Bonjour,

    Je poursuis mes avancées en java, en lien avec une base de données MySQL.

    La connexion fonctionne avec la base de données mais le code bloque sur l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO valeurs (id, prenom, nom) VALUES (null,'"+texteChampPrénom+"','"+texteChampNom+"');"
    Le message m'indique une erreur dans la syntaxe SQL à ce niveau.
    Ci-dessous le script concerné :
    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
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.JOptionPane;
    import javax.swing.JButton;
    import javax.swing.JTextField;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.text.NumberFormat;
    import java.text.ParsePosition;
     
    public class MoteurInject implements ActionListener {
    	Grille parent;
    	MoteurInject(Grille parent){ 
    	this.parent=parent;
    	}
    	public void actionPerformed(ActionEvent événement) {
    		JButton boutonClic = (JButton) événement.getSource();
    		String texteChampNom = parent.champNom.getText();
    		String texteChampPrénom= parent.champPrénom.getText();
    		Object sourceEvénement = événement.getSource();
    		if (sourceEvénement == parent.boutonInject){
     
    			// Information d'accès à la base de données
    			String url = "jdbc:mysql://localhost/test";
    			String login = "root";
    			String passwd = "root";
    			Connection cn =null;
    			Statement st =null;
     
    			try {
     
    				// Etape 1 : Chargement du driver
    				Class.forName("com.mysql.jdbc.Driver");
    				// Etape 2 : récupération de la connexion
    				cn = DriverManager.getConnection(url, login, passwd);
    				// Etape 3 : Création d'un statement
    				st = cn.createStatement();
     
    				String sql = "CREATE DATABASE IF NOT EXISTS data;";
     
    				//				"use data;"+"CREATE TABLE IF NOT EXISTS valeurs (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, prenom CHAR(30), NOM CHAR(30));"+"INSERT INTO valeurs VALUES (null,'"+texteChampPrénom+"','"+texteChampNom+"');"
     
     
    				//				// Etape 4 : exécution requête
    				st.executeUpdate(sql); 			
     
    				// Si récup données alors étapes 5 (parcours Resultset)
     
    			} catch (SQLException e) {
    				e.printStackTrace();
    			} catch (ClassNotFoundException e) {
    				// TODO: handle exception
    				e.printStackTrace();
    			} finally {
    				try {
    				// Etape 6 : libérer ressources de la mémoire.
    					cn.close();
    					st.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    			}
     
    			String urlfin = "jdbc:mysql://localhost/data";
     
    			try {
     
    				// Etape 1 : Chargement du driver
    				Class.forName("com.mysql.jdbc.Driver");
    				// Etape 2 : récupération de la connexion
    				cn = DriverManager.getConnection(urlfin, login, passwd);
    				// Etape 3 : Création d'un statement
    				st = cn.createStatement();
     
    				String sql2 = "CREATE TABLE IF NOT EXISTS valeurs (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, prenom CHAR(30), nom CHAR(30));"
    				+"INSERT INTO valeurs (id, prenom, nom) VALUES (null,'"+texteChampPrénom+"','"+texteChampNom+"');";
     
    				// Etape 4 : exécution requête
    				st.executeUpdate(sql2); 			
     
    				// Si récup données alors étapes 5 (parcours Resultset)
     
    			} catch (SQLException e) {
    				e.printStackTrace();
    			} catch (ClassNotFoundException e) {
    				// TODO: handle exception
    				e.printStackTrace();
    			} finally {
    				try {
    				// Etape 6 : libérer ressources de la mémoire.
    					cn.close();
    					st.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    			}
     
     
    		}
    	}
    }
    Je pense que le problème vient de la sélection de la database. En fait, le code créé bien la database mais pas la table 'valeurs' donc impossible de faire le INSERT INTO.

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Salut !

    le code créé bien la database mais pas la table 'valeurs'
    pas de message d'erreur à ce sujet ?

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				String sql2 = "CREATE TABLE IF NOT EXISTS valeurs (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, prenom CHAR(30), nom CHAR(30));"
    				+"INSERT INTO valeurs (id, prenom, nom) VALUES (null,'"+texteChampPrénom+"','"+texteChampNom+"');";
    Sépare tes requêtes, c'est une requête SQL par appel à executeUpdate / executeQuery. Du coup, vire aussi les ; dans tes requêtes.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'ai fractionné en trois string sql et je les ai executé ensuite. Cela a fonctionné parfaitement. Merci.

    Prochain problème qui donnera lieu à un nouveau post...combobox et Mysql.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur requete INSERT INTO en java mySQL
    Par ninya dans le forum Débuter
    Réponses: 1
    Dernier message: 08/01/2010, 10h15
  2. erreur syntaxe sur insert into (date)
    Par jpclutier dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2009, 10h02
  3. erreur 3219 sur insert into
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/11/2006, 16h02
  4. [SQL] Erreur lors de INSERT INTO => WHERE
    Par DeFCrew dans le forum Access
    Réponses: 14
    Dernier message: 07/08/2006, 16h26

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