Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
JDBC-illesztőprogram letöltése
Ha beágyazott SQL- vagy SQL Server-alapú tárolt eljárásokkal dolgozik, amelyek egynél több eredményhalmazt adnak vissza, az SQL Server Microsoft JDBC-illesztőprogramja a getResultSet metódust biztosítja az SQLServerStatement osztályban minden visszaadott adatkészlet beolvasásához. Emellett egynél több eredményhalmazt visszaadó utasítás futtatásakor az SQLServerStatement osztály végrehajtási módszerét is használhatja, mert az egy logikai értéket ad vissza, amely azt jelzi, hogy a visszaadott érték eredményhalmaz vagy frissítésszám-e.
Ha a végrehajtási módszer igaz értéket ad vissza, a futtatott utasítás egy vagy több eredményhalmazt adott vissza. Az első eredménykészletet a getResultSet metódus meghívásával érheti el. Annak megállapításához, hogy több eredményhalmaz is elérhető-e, meghívhatja a getMoreResults metódust, amely igazlogikai értéket ad vissza, ha több eredményhalmaz érhető el. Ha további eredményhalmazok érhetők el, a getResultSet metódust ismét meghívhatja a hozzáférésükhöz, és folytathatja a folyamatot, amíg az összes eredményhalmaz feldolgozásra nem kerül. Ha a getMoreResults metódus hamis eredményt ad vissza, nincs több feldolgozandó eredményhalmaz.
Ha a végrehajtási metódus hamis értéket ad vissza, a futtatott utasítás egy frissítésszámértéket adott vissza, amelyet a getUpdateCount metódus meghívásával kérhet le.
Megjegyzés:
A frissítésszámmal kapcsolatos további információkért lásd: Tárolt eljárás használata frissítésszámmal.
Az alábbi példában az AdventureWorks2025 mintaadatbázishoz való nyitott kapcsolatot a rendszer átadja a függvénynek, és létrehoz egy SQL-utasítást, amely futtatáskor két eredményhalmazt ad vissza:
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();
}
}
Ebben az esetben a visszaadott eredményhalmazok száma ismerten kettő. A kód írása azonban úgy történik, hogy ha ismeretlen számú eredményhalmazt ad vissza, például tárolt eljárás meghívásakor, az összes feldolgozásra kerül. Ha egy olyan tárolt eljárást szeretne meghívni, amely több eredményhalmazt ad vissza a frissítési értékekkel együtt, tekintse meg az összetett utasítások kezelését.
Megjegyzés:
Amikor meghívja az SQLServerStatement osztály getMoreResults metódusát, a korábban visszaadott eredményhalmaz implicit módon bezárul.