Précédent   Forum des professionnels en informatique > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2011, 10h31   #1
Membre habitué
 
Femme
Développeur Web
Inscription : juin 2011
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juin 2011
Messages : 283
Points : 133
Points : 133
Par défaut Résultats incomplets de l'exécution d'une requête

Salut à tous!
J'essaye de récupérer le résultat de l'execution d'une procédure stockée à laquelle je passe le paramètre "code". J'ai le code suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
CallableStatement proc = storedProcedureExecution.getCallableStatement();
            int parameterIndex = 1;
            //code retour
            proc.registerOutParameter( parameterIndex ++, Types.VARCHAR );
            //@code varchar(3)
            if (mainCro != null)
            {
                proc.setString(parameterIndex ++, code);
            }
            else
            {
                proc.setNull( parameterIndex ++, Types.VARCHAR );
            }
 
            boolean res = storedProcedureExecution.execute();
            List<String> table = new ArrayList<String>();
 
            ResultSet resultSet = proc.getResultSet();
 
            int index = 1;
            if (resultSet.next())
            {
                table.add( resultSet.getString( index ) );
                index ++;
            }
Le problème c'est que table ne contient qu'un seul résultat, alors qu'il devrait y en avoir plus. Je ne comprends pas d'où vient cette erreur.
Merci d'avance pour toute aide!
daydream123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 11h14   #2
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
Il n'y a pas de boucle dans l'exploitation de ton Resultset :

Code :
1
2
3
4
5
6
 
if (resultSet.next())
            {
                table.add( resultSet.getString( index ) );
                index ++;
            }
Il vaut mieux faire :

Code :
1
2
3
4
5
while (resultSet.next())//se déplace sur la ligne suivante et renvoie faux, si le curseur se trouve après la dernière ligne
            {
                table.add( resultSet.getString( index ) );
                index ++;//en crémentant index, lorsque tu liras la ligne suivante, tu liras aussi la colonne suivante. La conséquence est que tu lies ton résultset en diagonnale. Si tu as plus de lignes que de colonnes (ce qui est souvent le cas, ça va planter)
            }
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 13h34   #3
Membre habitué
 
Femme
Développeur Web
Inscription : juin 2011
Messages : 283
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : juin 2011
Messages : 283
Points : 133
Points : 133
Mince, j'avais pas fait attention
Merci beaucoup en tout cas
daydream123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h55.


 
 
 
 
Partenaires

Hébergement Web