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 :

PreparedStatement et la méthode setString


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Points : 53
    Points
    53
    Par défaut PreparedStatement et la méthode setString
    Bonjour à tous,

    je possède une requête contenant un paramètre dans le fichier requete.sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from conducteur where nom = ?
    Dans mon code java, je lis cette requête et l'ajoute à un preparedStatement.
    Ensuite, j'ajoute la valeur de mon paramètre à l'aide de la méthode setString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String value = "David";
    PreparedStatement statement = connection_db.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_READ_ONLY );
    statement.setString(1, value);
    result = statement.executeQuery();
    Le result ne contient aucun résultat alors que lorsque j'exécute manuellement la requête avec mon paramètre, je trouve un résultat.
    J'ai entouré d'un bloc try/catch mais aucune exception n'est levée.

    J'ai également imprimé via System.out.println() pour vérifier la requête et celle-ci est correcte.

    Quelqu'un a-t-il déjà rencontré ce problème?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    A première vue tout semble correct.
    As-tu tester ta requête en ayant ta requête SQL en dur ? Sans le setString ?
    Ou sans le where ?

    Cela va peut-être te donnée une idée d'où se trouve le problème. Si c'est le paramètre ou si c'est un problème plus globale.

    Cordialement,
    Patrick Kolodziejczyk.

  3. #3
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Effectivement tout parait correct à première vue.

    Peux tu poster la méthode complète ? Y'a peu être une boulette ailleurs..

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    J'ai trouvé l'erreur.

    Le champ 'nom' en DB est défini sur 20 caractères (CHAR(20)), il manquait donc les blancs derrière ma valeur.

    En rajoutant la fonction rtrim() ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from conducteur where rtrim(nom) = ?
    Bizarement dans mon outil d'exécution DB, la commande where nom = "David" fonctionne alors qu'avec Java, il faut indiquer explicitement les blancs.

    Merci à tous.

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    L'utilisation d'un rtrim sur le nom d'une colonne n'est pas normal. Surtout en sachant ce que fait le rtrim. Cela ne devrait pas fonctionné.
    Tu devrai peut-être chercher un peu plus, car ta solution n'est qu'un pansement.

    Cordialement,
    Patrick Kolodziejczyk.

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

Discussions similaires

  1. Problème avec la méthode setString
    Par hamza.rezgui dans le forum NetBeans
    Réponses: 1
    Dernier message: 29/04/2012, 23h45
  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. Réponses: 2
    Dernier message: 29/08/2006, 17h04
  5. Réponses: 4
    Dernier message: 22/08/2006, 18h37

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