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

avec Java Discussion :

Requête SQL avec JAVA


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut Requête SQL avec JAVA
    Bonsoir, j'ai un petit problème d'exécution de requête sql.

    Voici ma requéte que je veux exécuter à partir de ma JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String query = "insert into livre(id_livre,titre,auteur,prix)values (" + this.livre.getIdLivre()+ ","+this.livre.getTitre()+","+this.livre.getAuteur()+","+this.livre.getPrix() +")";
    Lorsque j'accède à mon formulaire depuis ma JSP, J'obtiens ceci dans la console d'eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Problème sur la requête : insert into livre(id_livre,titre,auteur,prix)values (3,Programmer en JAVA,C. delannoy,23.0)
    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 'en JAVA,C. delannoy,23.0)' at line 1 : 1064
    Alors il me récupère bien ce qui est entré en paramètre, mais il n'arrive pas à insérer l'ajout du livre dans la base de donnée !

    Est ce que j'ai un problème de syntaxe ? Car j'ai vérifié plusieurs fois. je ne voix pas d'où peut venir le problème.

    Est ce que quelqu'un aurait une idée ?

  2. #2
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 43
    Par défaut
    Bonsoir,

    essaye comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String query = "insert into livre(id_livre,titre,auteur,prix)values ('" + this.livre.getIdLivre()+ "','"+this.livre.getTitre()+"','"+this.livre.getAuteur()+"','"+this.livre.getPrix() +"')";
    Cordialement,
    dali.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Merci, je vais voir ce que ça donne.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Attention car ce code n'est pas sûr du tout ! La moindre quote dans le titre du livre pourrait casser le code SQL.
    Non seulement tu peux avoir des erreurs inattendus comme celle là, mais tu cours le risque d'actes malveillants via SQL-Injection.

    Il est préférable de passer par les PreparedStatement !!

    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
    // 1. On utilises des ? pour les valeurs de notre requête :
    String query = "insert into livre(id_livre,titre,auteur,prix) values (?, ?, ?, ?)";
     
    // 2. On crée notre PreparedStatement :
    PreparedStatement ps = con.prepareStatement(query);
    try {
    	// 3. On défini les valeurs de chacune des ? selon leurs types :
    	ps.setInt(1, this.livre.getIdLivre());
    	ps.setString(2, this.livre.getIdLivre());
    	ps.setString(3, this.livre.getIdLivre());
    	ps.setDouble(4, this.livre.getIdLivre());
     
    	// 4. On exécute notre update :
    	int result = ps.executeUpdate();
     
    } finally {
    	ps.close();
    }
    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Merci pour vos précisions. Je suis finalement passé par le PreparedStatement !

    L'insertion se fait très bien dans la base de données. c'est visible dans ma console dos.

    Par contre j'ai une erreur au niveau dans la console d'eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Problème sur la requête : insert into livre(id_livre,titre,auteur,prix) values (?, ?, ?, ?)
    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 : 1064
    Je crois qu'il y a quelque chose qu'il n'aime pas dans la manière d'écrire la syntaxe !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Voila le morceau de code :

    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
    try {
     
    			new MysqlConnection();
    			MysqlConnection mysql = MysqlConnection.getInstance();
     
    			ResultSet rs = mysql.getQuery("SELECT MAX(id_livre) as max_id_livre FROM livre");
    			while (rs.next()) {
    				int newId = rs.getInt("max_id_livre") + 1;
    				this.livre.setIdLivre(newId);
    			}
     
    			con = MysqlConnection.openConnection();
    			//String query = "INSERT INTO livre VALUES(" + this.livre + ")";
    		    //String query = "insert into livre(id_livre,titre,auteur,prix)values (" + this.livre.getIdLivre()+ ","+this.livre.getTitre()+","+this.livre.getAuteur()+","+this.livre.getPrix() +")";
     
    			String query = "insert into livre(id_livre,titre,auteur,prix) values (?, ?, ?, ?)";
    			PreparedStatement ps = con.prepareStatement(query);
    			try {
    				ps.setInt(1, this.livre.getIdLivre());
    				ps.setString(2, this.livre.getTitre());
    				ps.setString(3, this.livre.getAuteur());
    				ps.setFloat(4, this.livre.getPrix());
     
    				res = ps.executeUpdate();
     
    			}
    			finally{
    				System.out.println("Il y a eu "+ res+" ajout dans la base !");
    			} 
     
    			mysql.execQuery(query);
     
    		} catch(Exception e){
     
    			e.getStackTrace();
    		}
     
     
    		return "SUCCESS";

Discussions similaires

  1. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47
  2. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35
  3. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  4. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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