Dela via


Använda flera resultatuppsättningar

Ladda ned JDBC-drivrutin

När du arbetar med infogade SQL- eller SQL Server-lagrade procedurer som returnerar mer än en resultatuppsättning tillhandahåller Microsoft JDBC-drivrutinen för SQL Server metoden getResultSet i klassen SQLServerStatement för att hämta varje uppsättning data som returneras. När du kör en instruktion som returnerar mer än en resultatuppsättning kan du dessutom använda körningsmetoden för klassen SQLServerStatement, eftersom den returnerar ett booleskt värde som anger om det returnerade värdet är en resultatuppsättning eller ett uppdateringsantal.

Om körningsmetoden returnerar true har instruktionen som kördes returnerat en eller flera resultatuppsättningar. Du kan komma åt den första resultatuppsättningen genom att anropa metoden getResultSet. För att avgöra om fler resultatuppsättningar är tillgängliga kan du anropa metoden getMoreResults , som returnerar ett booleskt värde för true om fler resultatuppsättningar är tillgängliga. Om fler resultatuppsättningar är tillgängliga kan du anropa metoden getResultSet igen för att komma åt dem och fortsätta processen tills alla resultatuppsättningar har bearbetats. Om metoden getMoreResults returnerar false finns det inga fler resultatuppsättningar att bearbeta.

Om execute-metoden returnerar false returnerar instruktionen som kördes ett uppdateringsantal, som du kan hämta genom att anropa metoden getUpdateCount.

Anmärkning

Mer information om antalet uppdateringar finns i Använda en lagrad procedur med ett uppdateringsantal.

I följande exempel skickas en öppen anslutning till AdventureWorks2025-exempeldatabasen till funktionen och en SQL-instruktion skapas som returnerar två resultatuppsättningar när den körs:

public static void executeStatement(Connection con) {
    try (Statement stmt = con.createStatement();) {
        String SQL = "SELECT TOP 10 * FROM Person.Contact; SELECT TOP 20 * FROM Person.Contact";

        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"));
                }
            }
            System.out.println();
            results = stmt.getMoreResults();
        } while (results);
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

I det här fallet är det känt att antalet returnerade resultatuppsättningar är två. Koden skrivs dock så att om ett okänt antal resultatuppsättningar returnerades, till exempel när en lagrad procedur anropades, skulle alla bearbetas. Ett exempel på hur du anropar en lagrad procedur som returnerar flera resultatuppsättningar tillsammans med uppdateringsvärden finns i Hantera komplexa instruktioner.

Anmärkning

När du anropar metoden getMoreResults för KLASSEN SQLServerStatement stängs den tidigare returnerade resultatuppsättningen implicit.

Se även

Användning av uttalanden med JDBC-drivrutinen