Utilizzo di più set di risultati

Quando si utilizzano stored procedure di SQL Server o SQL inline che restituiscono più set di risultati, il driver JDBC per Microsoft SQL Server 2005 offre il metodo getResultSet della classeSQLServerStatement per il recupero di ciascun set di dati restituito. Quando si esegue un'istruzione che restituisce più set di risultati, è inoltre possibile utilizzare il metodo execute della classe SQLServerStatement, che restituisce un valore boolean che indica se il valore restituito è un set di risultati o un conteggio aggiornamenti.

Se il metodo execute restituisce true, l'istruzione eseguita ha restituito uno o più set di risultati. Per accedere al primo set di risultati, chiamare il metodo getResultSet. Per determinare se sono disponibili ulteriori set di risultati, chiamare il metodo getMoreResults che, in caso affermativo, restituisce un valore boolean true. Se sono disponibili più set di risultati, chiamare di nuovo il metodo getResultSet per visualizzarli. È possibile ripetere la procedura finché non sono stati elaborati tutti i set di risultati. Se il metodo getMoreResults restituisce false, non sono disponibili ulteriori set di risultati da elaborare.

Se il metodo execute restituisce false, l'istruzione eseguita ha restituito un valore di conteggio aggiornamenti, che può essere recuperato chiamando il metodo getUpdateCount.

Nota

Per ulteriori informazioni sui conteggi di aggiornamento, vedere Utilizzo di una stored procedure con i conteggi di aggiornamento.

Nell'esempio seguente una connessione aperta a AdventureWorks, il database di esempio di SQL Server, è passata alla funzione e viene costruita un'istruzione SQL che, una volta eseguita, restituisce due set di risultati:

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();
   }
}

In questo caso il numero di set di risultati (pari a due) è noto. Tuttavia, il codice è scritto in modo tale che se fosse restituito un numero non noto di set di risultati, come, ad esempio, nelle chiamate a stored procedure, tutti i set verranno comunque elaborati. Per un esempio di chiamata a una stored procedure che restituisce più set di risultati oltre a valori di aggiornamento, vedere Gestione delle istruzioni complesse.

Nota

Quando si esegue una chiamata al metodo getMoreResults della classe SQLServerStatement, il set di risultati restituito in precedenza viene implicitamente chiuso.

Vedere anche

Altre risorse

Utilizzo delle istruzioni con il driver JDBC