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 :

JDBC - ResultSet vide - Requete bonne


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut JDBC - ResultSet vide - Requete bonne
    Bonjour à tous,

    Ce message est évidemment entre le forum java et sqlserver.

    J'ai une classe d'accès à SQLServer qui marche parfaitement, mon problème se situe sur une requête précise qui ne retourne rien dans mon application mais qui retourne le bon résultat dans Query Analyser.

    La voici:
    SELECT substring(code_valuelist,CHARINDEX('-',code_valuelist)+1,20) AS code , description AS description FROM tbldsd_valuelist WHERE fk_code_valuelist='SYMPTOME' AND fk_code_site='ADMIN' ORDER BY position

    (le copier-coller vient de SQL Profiler).

    Ma version de JDBC est celle de Microsoft SQLServer 2005 et j'attaque une base SQL2000 developer edition.

    voici la partie de code qui exécute le SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Statement vStatement = null;
    vStatement = aConn.createStatement();
     
    if (vStatement.execute(pQuery){
    <div style="margin-left:40px">vDbRes = vStatement.getResultSet();</div>}
    Je souligne que ce code marche pour d'autres requetes sans aucun problème.

    Qqn a-t-il une idée? problème sur le JDBC de Microsoft?

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 91
    Points : 66
    Points
    66
    Par défaut
    salut,

    il ne manquerait pas une parenthèse fermante par hasard ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (vStatement.execute(pQuery)){
    Il faut être économe de son mépris en raison du grand nombre de nécessiteux (Chateaubriand)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    certes, erreur de recopie... le problème ne vient donc pas de là

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    Je pense avoir le même genre de problème (et pas de solution non plus) avec l'appel d'une procédure stockée. Quand j'appelle une certaine procédure, qui par ailleurs fonctionne très bien quand elle est appellée depuis un éditeur SQL, je n'ai pas de ResultSet en retour.
    Par contre si j'appelle la méthode getUpdateCount() du PreparedStatement (en fait c'est un CallableStatement pour les procédures mais la méthode est la même) je récupère "1", qui est le nombre de lignes que renvoit ma méthode.

    Est ce que ta requête ne renvoit pas qu'une seule ligne par hasard? peut être que lorsque la base ne renvoit qu'un seul résultat il n'est pas mis dans un ResultSet mais ailleurs?

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    As-tu essayé avec un la méthode executeQuery ?

    C'est peut-être un problème de driver JDBC, essaye de trouver un driver qui corresponde à la version que tu utilises.

    Dernier test : utilise un driver odbc et utilise le driver odbc-jdbc de Sun pour te connecter à la ressource odbc créée. Ca rajoute plein de couches certes mais il s'agit surtout de tester le driver...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Utilise un PreparedStatement au lieu de passer en brut ta requête...
    Le PreparedStatement gérera comme il faut les apostrophes, etc...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Points : 165
    Points
    165
    Par défaut
    Bon je viens de trouver la solution à mon problème, donc c'est peut être la même pour toi. La réponse de Nemek était la bonne (merci au passage ) : avec la méthode executeQuery ça marche. En tout cas chez moi si la réponse renvoie plusieurs ResultSet je dois utiliser execute() puis getResultSet() par contre s'il n'y a qu'un seul ResultSet je dois IMPERATIVEMENT utiliser executeQuery() sinon l'appel ne renvoit rien, même pas une erreur.

    Question bête : Est ce que JDBC impose ça ou c'est un bug?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Question bête : Est ce que JDBC impose ça ou c'est un bug?
    Moi je pencherais plus pour une implémentation incomplète du driver ou un truc
    du genre...

    a+
    Xavier

  9. #9
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2005
    Messages : 124
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par Rouxxx
    Je souligne que ce code marche pour d'autres requetes sans aucun problème.

    Qqn a-t-il une idée? problème sur le JDBC de Microsoft?
    Est-ce que tes autres requetes utilisent le même driver? probablement
    Tout comme la vie, on ne participe pas à une guerre pour la perdre !!!
    PinguY4Ever

Discussions similaires

  1. ResultSet vide malgré bonne connexion
    Par new_wave dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 23/04/2012, 12h35
  2. SQLServer - JDBC - Resultset vide - Requete bonne
    Par Rouxxx dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/05/2006, 19h51
  3. [JDBC] ResultSet Vide avec Oracle9 et WebSphere5
    Par mcrbe dans le forum Websphere
    Réponses: 5
    Dernier message: 24/04/2006, 12h17
  4. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40
  5. [JDBC] ResultSet d'une Requête stockée
    Par YéTeeh dans le forum Oracle
    Réponses: 6
    Dernier message: 15/05/2004, 18h35

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