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 :

ResultSet SQL avec apostrophe


Sujet :

JDBC Java

  1. #1
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut ResultSet SQL avec apostrophe
    Bonjour,

    J'ai un souci en Java, lors d'une récupération de ma BD avec select.

    Le problème survient avec les données ayants un ' par exemple l'école. Le compilateur la traite comme une variable. C'est pour cela qu'il m'affiche une erreur:
    ava.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'réf='N2084403' and Composant='AILETTES' and caract ='Nbre d\'ailettes''.
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
    at catalogue.catalogueRemplissage.getInfoFicheTechnique(catalogueRemplissage.java:160)
    at catalogue.catalogueRemplissage.Remplir(catalogueRemplissage.java:245)
    at catalogue.catalogueRemplissage.<init>(catalogueRemplissage.java:38)
    at catalogue.catalogueInterf.main(catalogueInterf.java:184)
    Je n'ai pas pu utilisé le PreparedStatement car je ne sais pas récupérer des valeurs de la requête comme le getString("xx"); pour le Statement..

    Avez vous une idée ?

    Merci d'avance pour votre aide.
    On essaie
    et ça marchera

    Mon site
    Ma page

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Un PreparedStatement fonctionne exactement de la même façon qu'un Statement en ce qui concerne les ResultSet.

    Ton problème ici vient justement du fait que tu n'utilises pas de PreparedStatement qui sait gérer les caractères qui posent problème dans ton Statement.

    Solution: utiliser un PreparedStatement et récupérer le Resulset résultat de l'appel à la méthode executeQuery de ton PreparedStatement.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Merci SiNok
    Mais le probleme au niveau de la PreparedStatement est que je peux pas récupérer les valeurs de la requette par un getString par exemple
    On essaie
    et ça marchera

    Mon site
    Ma page

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si, c'est totalement possible.


    Mais le probleme au niveau de la PreparedStatement est que je peux pas récupérer les valeurs de la requette par un getString par exemple
    Si tu peux. Tu racontes un peu n'importe quoi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Préparation de la requête, les ? sont utilisé par java pour déterminer l'emplacement des paramètres 
    PreparedStatement p = con.prepareStatement("select COL1, COL2, COL3, COL4 from MA_TABLE where id=? and type=?"); 
    //spécification de la valeur des paramètres 
    p.setString(1,"ID1"); 
    p.setInt(2,45); 
    //exécution de la requête ResultSet rs = p.executeQuery();
    while (rs.next()) {
     //Si COL1 est de type VARCHAR
     System.out.println(rs.getString("COL1"));
     //Si COL2 est de type entien
     System.out.println(rs.getInt("COL2"));  // Et ainsi de suite...
    }
    Pense aussi à bien refermer la connexion, le PreparedStatement et le ResultSet dans le bloc finally pour être sur qu'ils sont bien libérés
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Merci Sinok
    c'est résolu

    Entre nous j'ai trouvé une autre solution moins fiable,
    au lieu de mettre par exemple l'école je mets l''école


    On essaie
    et ça marchera

    Mon site
    Ma page

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par javaNavCha Voir le message
    Entre nous j'ai trouvé une autre solution moins fiable,
    au lieu de mettre par exemple l'école je mets l''école
    Pourquoi venir demander des conseils ? Surtout si c'est pour les ignorer et opter pour une solution crade qui risque de reposer problème avec d'autres caractères spéciaux :/

  7. #7
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,



    Pourquoi venir demander des conseils ? Surtout si c'est pour les ignorer et opter pour une solution crade qui risque de reposer problème avec d'autres caractères spéciaux :/
    no...
    j'ai voulu donner une solution mais qui n'est pas optimale
    Personnellement j'utilise PreparedStatement
    On essaie
    et ça marchera

    Mon site
    Ma page

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

Discussions similaires

  1. [Débutant] requete sql avec apostrophe
    Par gadsweb dans le forum C#
    Réponses: 4
    Dernier message: 07/01/2015, 15h03
  2. [AC-2007] requete sql avec apostrophe
    Par hariots dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2011, 19h08
  3. synthaxe SQL avec l'apostrophe
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/12/2007, 21h50
  4. ResultSet updatable avec SQL Server
    Par SuperPat dans le forum JDBC
    Réponses: 1
    Dernier message: 07/06/2007, 15h20
  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