Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
JDBC-stuurprogramma downloaden
Standaard wordt een resultatenset die in een transactie is gemaakt, geopend gehouden nadat de transactie is doorgevoerd in de database of wanneer deze wordt teruggedraaid. Het is echter soms handig om de resultatenset te sluiten, nadat de transactie is doorgevoerd. Hiervoor ondersteunt het Microsoft JDBC-stuurprogramma voor SQL Server het gebruik van de bewaring van resultatensets.
De bewaring van resultatensets kan worden ingesteld met behulp van de setHoldability-methode van de klasse SQLServerConnection . Bij het instellen van de bewaring met behulp van de methode setHoldability, kan de resultatenset bewaringsconstanten van ResultSet.HOLD_CURSORS_OVER_COMMIT of ResultSet.CLOSE_CURSORS_AT_COMMIT worden gebruikt.
Het JDBC-stuurprogramma biedt ook ondersteuning voor het instellen van houdbaarheid bij het maken van een van de Statement-objekten. Bij het maken van de instructieobjecten met overbelastingen met parameters voor de bewaring van resultatensets, moet de bewaring van het instructieobject overeenkomen met de bewaring van de verbinding. Wanneer ze niet overeenkomen, wordt er een uitzondering opgeworpen. Dit komt doordat SQL Server alleen de bewaring op verbindingsniveau ondersteunt.
De bewaring van een resultatenset is de bewaring van het SQLServerConnection-object dat is gekoppeld aan de resultatenset op het moment dat de resultatenset alleen wordt gemaakt voor cursors aan de serverzijde. Deze is niet van toepassing op cursors aan de clientzijde. Alle resultatensets met cursors aan de clientzijde hebben altijd de houdbaarheidswaarde van ResultSet.HOLD_CURSORS_OVER_COMMIT.
Voor servercursors geldt dat wanneer deze zijn verbonden met SQL Server 2005 of hoger, het instellen van de houdbaarheid alleen van invloed is op de houdbaarheid van nieuwe resultsets die nog moeten worden gemaakt op die verbinding. Dit betekent dat het instellen van houdbaarheid geen invloed heeft op de houdbaarheid van resultatensets die eerder zijn aangemaakt en al zijn geopend op die verbinding.
In het volgende voorbeeld wordt de uitvoerbaarheid van de resultatenset ingesteld tijdens het uitvoeren van een lokale transactie die bestaat uit twee afzonderlijke instructies in het try blok. De queries worden uitgevoerd op de tabel Production.ScrapReason in de AdventureWorks2025-voorbeeldendatabase. Eerst schakelt het voorbeeld over naar de handmatige transactiemodus door de automatische doorvoer in te stellen op false. Zodra de modus voor automatisch doorvoeren is uitgeschakeld, worden er geen SQL-instructies doorgevoerd totdat de toepassing de doorvoermethode expliciet aanroept. De code in het catch-blok draait de transactie terug als er een uitzondering optreedt.
public static void executeTransaction(Connection con) {
try (Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);) {
con.setAutoCommit(false);
con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Bad part')");
ResultSet rs = stmt.executeQuery("SELECT * FROM Production.ScrapReason");
con.commit();
System.out.println("Transaction succeeded.");
// Display results.
while (rs.next()) {
System.out.println(rs.getString(2));
}
}
catch (SQLException ex) {
ex.printStackTrace();
try {
System.out.println("Transaction failed.");
con.rollback();
}
catch (SQLException se) {
se.printStackTrace();
}
}
}