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 :

Erreur execute Query


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut Erreur execute Query
    Bonjour,

    Pouvez vous m'aider, avec ce code, je n'ai aucune erreur, à l'exception des momments ou le nom et/ou le prénom contiennent une apostrophe.

    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
     
    public String GetClientPhone(Connection con, String nom, String prenom){
    		String queryString = "select tel from client where nom='"+ nom +"' and prenom='"+ prenom +"'";
    		String tel="---";
    		try{
    			stmt = con.createStatement();
    			ResultSet rs = (ResultSet) stmt.executeQuery(queryString);
    			while (rs.next()) {	
    					tel=rs.getString("tel");
    			}
    			stmt.close();
    		}
    		// Close resources
    		catch(SQLException ex) {
                            ...
    		}
    		return tel;
    	}
    Donc pour régler le problème, comme pour d'autres méthodes, j'utilise les prepared statement:
    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
     
    public String GetClientPhone(Connection con, String nom, String prenom){
    		String queryString = "select tel from client where nom=? and prenom=?";
    		String tel="---";
    		try{
    			PreparedStatement preparedStatement = con.prepareStatement(queryString);
    			preparedStatement.setString(1,nom);
    			preparedStatement.setString(2,prenom);
    			ResultSet rs = (ResultSet)preparedStatement.executeQuery(queryString);		
    			while (rs.next()) {	
    					tel=rs.getString("tel");
    			}
    			preparedStatement.close();
    		}
    		// Close resources
    		catch(SQLException ex) {
                            ...
    		}
    		return tel;
    	}
    Cependant, dans ce cas j'ai une erreur lors de "l'executeQuerry"...
    Pourtant ce sont les meme données et j'utilise ce meme systeme pour obtenir dans info dans ma BD qui contiennent des apostrophes.

    Quelqu'un a-t-il quelque chose pour m'aider?

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    ResultSet rs = preparedStatement.executeQuery();

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut
    Citation Envoyé par the-gtm Voir le message
    ResultSet rs = preparedStatement.executeQuery();
    Cela n'y change rien... :s
    Message: 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 '? and prenom=?' at line 1
    SQLState: 42000
    ErrorCode: 1064

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Bonjour,


    Le setString ajoute automatiquement des quotes.

    Si tu essaies de faire un truc comme ca, ça donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preparedStatement.setString(2,prenom.replaceAll("'","\'"));
    Je ne sais pas si cela va fonctionner, mais si c'est le cas, il doit probablement y avoir quelquechose de mieux à faire.


    Eric

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut
    Citation Envoyé par EricMoa Voir le message
    Bonjour,


    Le setString ajoute automatiquement des quotes.

    Si tu essaies de faire un truc comme ca, ça donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preparedStatement.setString(2,prenom.replaceAll("'","\'"));
    Je ne sais pas si cela va fonctionner, mais si c'est le cas, il doit probablement y avoir quelquechose de mieux à faire.


    Eric
    Merci Eric, j'ai déjà essayé mais le replaceAll ne replace rien ;-) ...
    Par contre j'ai remarqué que mes autres méthodes qui fonctionnaient avec mes preparedstatement ne fonctionnent plus non plus!!!
    N'est ce pas lié à la BD :s???
    Merci

  6. #6
    Membre chevronné Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Par défaut
    Cela semble étrange :
    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
     
    public String GetClientPhone(Connection con, String nom, String prenom){
    		String sql = "select A.tel from client A where A.nom= ? and A.prenom= ? ";
    		String tel="---";
    		try{
    			PreparedStatement pstmt = con.prepareStatement(sql);
    			pstmt.setString(1,nom);
    			pstmt.setString(2,prenom);
    			ResultSet rs = pstmt.executeQuery();		
    			while (rs.next()) {	
    					tel=rs.getString("tel");
    			}
    			preparedStatement.close();
    		}
    		// Close resources
    		catch(SQLException ex) {
                            ...
    		}
    		return tel;
    	}
    Ce code fonctionne normalement sans aucun problème surtout avec une base Mysql, peux tu vérifier la version de ton driver Mysql.

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/12/2014, 08h47
  2. Réponses: 2
    Dernier message: 06/08/2010, 09h41
  3. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38
  4. Réponses: 18
    Dernier message: 10/12/2005, 01h19
  5. [Ant]Erreur execution d'une tache ANT
    Par gerin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/05/2004, 16h59

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