Share via


Utilisation de plusieurs jeux de résultats

Lorsque l'on travaille sur des procédures stockées SQL Server ou SQL incluses qui retournent plus d'un jeu de résultats, le pilote JDBC de Microsoft SQL Server 2005 propose la méthode getResultSet de la classe SQLServerStatement pour l'extraction de chaque jeu de données retourné. En outre, lors de l'exécution d'une instruction qui retourne plus d'un jeu de résultats, vous pouvez utiliser la méthode execute de la classe SQLServerStatement car elle retourne une valeur boolean qui indique si la valeur retournée est un jeu de résultats ou un nombre de mises à jour.

Si la méthode execute retourne la valeur true, l'instruction exécutée a retourné au moins un jeu de résultats. Vous pouvez accéder au premier jeu de résultats en appelant la méthode getResultSet. Pour déterminer si des jeux de résultats supplémentaires sont disponibles, vous pouvez appeler la méthode getMoreResults, qui retourne une valeur boolean true en cas de disponibilité de jeux de résultats supplémentaires. Si des jeux de résultats supplémentaires sont disponibles, vous pouvez appeler la méthode getResultSet pour y accéder, tout en continuant le processus jusqu'à ce que tous les jeux de résultats soient traités. Si la méthode getMoreResults retourne la valeur false, cela signifie qu'il n'y a plus de jeu de résultats à traiter.

Si la méthode execute retourne la valeur false, cela signifie que l'instruction exécutée a retourné un nombre de mises à jour, que vous pouvez extraire en appelant la méthode getUpdateCount.

NoteRemarque :

Pour plus d'informations sur le nombre de mises à jour, consultez Utilisation d'une procédure stockée avec un nombre de mises à jour.

Dans l'exemple suivant, une connexion ouverte à l'exemple de base de données SQL Server AdventureWorks est transmise à la fonction et une instruction SQL est créée, qui retourne deux jeux de résultats lors de son exécution :

public static void executeStatement(Connection con) {
   try {
      String SQL = "SELECT TOP 10 * FROM Person.Contact; _" +
                   "SELECT TOP 20 * FROM Person.Contact";
      Statement stmt = con.createStatement();
      boolean results = stmt.execute(SQL);
      int rsCount = 0;

      //Loop through the available result sets.
     do {
        if(results) {
           ResultSet rs = stmt.getResultSet();
           rsCount++;

           //Show data from the result set.
           System.out.println("RESULT SET #" + rsCount);
           while (rs.next()) {
              System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
           }
           rs.close();
        }
        System.out.println();
        results = stmt.getMoreResults();
        } while(results);
      stmt.close();
      }
   catch (Exception e) {
      e.printStackTrace();
   }
}

Dans ce cas, le nombre de jeux de résultats retourné est deux. Cependant, le code est écrit de telle façon que si un nombre inconnu de jeux de résultats est retourné, comme lors de l'appel d'une procédure stockée, tous les jeux de résultats sont traités. Pour découvrir un exemple d'appel de procédure stockée qui retourne plusieurs jeux de résultats avec des valeurs de mise à jour, consultez Gestion d'instructions complexes.

NoteRemarque :

Lors de l'appel de la méthode getMoreResults de la classe SQLServerStatement, le jeu de résultats précédemment retourné est implicitement fermé.

Voir aussi

Autres ressources

Utilisation d'instructions avec le pilote JDBC