Sdílet prostřednictvím


Použití více sad výsledků

Stáhnout ovladač JDBC

Při práci s vloženými procedurami SQL nebo SQL Server uloženými procedurami, které vracejí více než jednu sadu výsledků, poskytuje ovladač Microsoft JDBC pro SQL Server metodu getResultSet ve třídě SQLServerStatement pro načtení každé sady vrácených dat. Kromě toho při spuštění příkazu, který vrací více než jednu sadu výsledků, můžete použít execute metodu SQLServerStatement třídy, protože vrátí logickou hodnotu, která označuje, zda vrácená hodnota je sada výsledků nebo počet aktualizací.

Pokud metoda execute vrátí hodnotu true, příkaz, který byl spuštěn, vrátil jednu nebo více sad výsledků. K první sadě výsledků se dostanete voláním metody getResultSet. Chcete-li zjistit, zda jsou k dispozici více sad výsledků, můžete volat getMoreResults metoda, která vrátí logickou hodnotu true , pokud je k dispozici více sad výsledků. Pokud je k dispozici více sad výsledků, můžete znovu volat metodu getResultSet pro přístup k nim a pokračovat v procesu, dokud nebudou zpracovány všechny sady výsledků. Pokud getMoreResults metoda vrátí false, neexistují žádné další sady výsledků pro zpracování.

Pokud metoda execute vrátí hodnotu false, příkaz, který byl spuštěn, vrátil hodnotu počtu aktualizací, kterou můžete načíst voláním getUpdateCount metoda.

Poznámka:

Další informace o počtech aktualizací najdete v tématu Použití uložené procedury s počtem aktualizací.

V následujícím příkladu se do funkce předá otevřené připojení k ukázkové databázi AdventureWorks2025 a vytvoří se příkaz SQL, který při spuštění vrátí dvě sady výsledků:

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

V tomto případě je počet vrácených sad výsledků známý jako dva. Kód se ale zapíše tak, že pokud se vrátí neznámý počet sad výsledků, například při volání uložené procedury, budou všechny zpracovány. Příklad volání uložené procedury, která vrací více sad výsledků spolu s aktualizačními hodnotami, najdete v tématu Zpracování složitých příkazů.

Poznámka:

Při volání metody "getMoreResults" třídy SQLServerStatement je dříve vrácená sada výsledků implicitně uzavřena.

Viz také

Použití příkazů s ovladačem JDBC