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 :

setString et preparedStatement, pb de guillemets...


Sujet :

JDBC Java

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

    Informations forums :
    Inscription : Août 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut setString et preparedStatement, pb de guillemets...
    Salut, je suis particuliérement débutant en JAVA mais j'ai déjà fait des connection avec mySQL par php...
    Je veux donc lire des donnée d'une BDD MySQL sur un serveur local par JAVA.
    J'utilise dons un super bouquin et j'arrive à faire tout ce que je veux sans problème jusqu'à ce que je fasse des preparedStatement...
    J'en fais avec des ? qui sont remplacé gràce à setInt et ça marche bien genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    PreparedStatement requeteModele1  = lien.prepareStatement ("SELECT * FROM `types` WHERE numero=?"); 
     
    requeteModele1.setInt (1,21); // settage de la valeur ? du dessus
     
    System.out.println (requeteModele1);
    ResultSet resultat = requeteModele1.executeQuery ();
    while (resultat.next()) {
    	System.out.println (resultat.getString ("numero")+" -> "+resultat.getString ("nom"));
    			}
    Et ça marche trés bien mais quand je veux utiliser un setString pour seter le ? de ma requete, j'ai un problème vraiment débile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PreparedStatement requeteModele1  = lien.prepareStatement ("SELECT * FROM ?"); 	
     
    requeteModele1.setString (1,"TYPES");
    j'ai une exception SQL : You have an error in your SQL syntax
    Le problème, c'est que setString met des ' autour de TYPES dans la requete générée et qu'il faudrait plutôt des `... C'est cette petite différence qui fait que ça marche pas.

    Comment pourrais je faire pour que setString (); entoure mes chaines de ces guillemets spéciaux ou de rien au lieu de mettre ce simple quote qui me crée une erreur de syntaxe ?

    Ou bien sinon, y a t il un moyen de faire que mySQL accepte la syntaxe avec simple quote ?

    Je rappelle que je me suis mis à JAVA hier en suivant un bouquin étape par étape sans toujours trés bien comprendre... Je pense qu'il s'agit d'un probléme avec JDBC ou le driver entre JDBC et MySQL... je ne sais pas trop où se trouve la methode setString ().

    Je travaille avec :
    Eclipse SDK 3.1.1
    jre 1.5.0_06
    EasyPhP 1.8
    et donc MySQL 4.1.9
    meon driver JDBC et le dernier telechargeable du site mySQL : mysql-connector_java-5.0.3

    Ca me fait me dire que je devrait peut être mettre à jour le mySQL de EasyPhP...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bon...
    Je viens de mettre à jour ma version de MySQL pour la 5.0.24 community au sein de easyPhP (serveur apache 1.3.33) et j'ai aussi essayé en passant par un serveur MySQL installé sur windows sans passer par easyPhP...

    Le problème persiste exactement de la même manière dans les deux cas.

    Cette histoire me fait me poser une question subsidiaire :
    est il mauvais d'utiliser une "simulation" de serveur apache comme easyPhP pour accéder à mySQL ou bien j'y gagnerai vraiment à utiliser MySQL tout seul ?
    De toute façon, j'y accéde sans problème et de la même manière depuis JAVA mais plus tard, je risque d'avoir besoin d'un accés trés rapide à la BDD.

    Au fait, j'utilise Windows XP pro.

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Le problème est assez normal, puisque, si tu regardes la doc de la méthode setString(), c'est bien noté pour setter un paramètre, et les paramètres en SQL sont bien entourés de '.

    Donc, je pense que tu devras gérer toi-même le nom de la table dans la requête

  4. #4
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Pourquoi ne pas faire une fonction qui prend en parametre le nom de ta table et qui te renvoie "select * from `nomDeLatable`" ?
    allez je suis dans un bon jour voilà le code immensement long de cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public String getRequeteSelect( String nomDeLaTable )
    {
        return "SELECT * FROM `"+nomDeLaTable+"`" ;
    }
    c'est la seul requete "select * from ..." qui est possible d'appliquer à n'importe quelle table, car avec une clause Where les noms des champs dans chaque table sont différents (enfin j'éspère, sinon c'est le vrai foutoir )

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Et oui, bien sûr.

    Merci les gars.
    Je vais faire le coup que me propose Scorpyosis.

    Je met en "résolu". Merci encore.

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

Discussions similaires

  1. PreparedStatement et la méthode setString
    Par nddvlp dans le forum JDBC
    Réponses: 4
    Dernier message: 13/01/2015, 10h31
  2. preparedStatement.setString change le charset ?
    Par oldergod dans le forum JDBC
    Réponses: 4
    Dernier message: 05/11/2008, 02h27
  3. PreparedStatement, setString et List
    Par babylone7 dans le forum JDBC
    Réponses: 4
    Dernier message: 29/09/2006, 09h35
  4. TAGS -> attributs sans guillemets
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 14/08/2003, 13h01
  5. Comment coder guillemets et cotes ?
    Par Vow dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 14/05/2003, 12h11

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