Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
JDBC-stuurprogramma downloaden
Het Microsoft JDBC-stuurprogramma voor SQL Server ondersteunt de optionele JDBC 3.0-API's om automatisch gegenereerde rij-id's op te halen. De belangrijkste waarde van deze functie is om IDENTITEITSwaarden beschikbaar te maken voor een toepassing die een databasetabel bijwerkt zonder dat een query en een tweede retour naar de server nodig zijn.
Omdat SQL Server geen pseudokolommen voor id's ondersteunt, moeten updates die de automatisch gegenereerde sleutelfunctie moeten gebruiken, worden uitgevoerd op basis van een tabel die een IDENTITEITS-kolom bevat. SQL Server staat slechts één IDENTITY-kolom per tabel toe. De resultatenset die wordt geretourneerd door de methode getGeneratedKeys van de klasse SQLServerStatement heeft slechts één kolom, met de geretourneerde kolomnaam van GENERATED_KEYS. Als gegenereerde sleutels worden aangevraagd in een tabel die geen IDENTITY-kolom heeft, retourneert het JDBC-stuurprogramma een null-resultatenset.
Maak bijvoorbeeld de volgende tabel in de voorbeelddatabase AdventureWorks2025:
CREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
In het volgende voorbeeld wordt een open verbinding met de AdventureWorks2025-voorbeelddatabase doorgegeven aan de functie. Er wordt een SQL-instructie samengesteld waarmee gegevens worden toegevoegd aan de tabel, waarna de instructie wordt uitgevoerd en de kolomwaarde IDENTITY wordt weergegeven.
public static void executeInsertWithKeys(Connection con) {
try(Statement stmt = con.createStatement();) {
String SQL = "INSERT INTO TestTable (Col2, Col3) VALUES ('S', 50)";
int count = stmt.executeUpdate(SQL, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
if (rs.next()) {
do {
for (int i=1; i<=columnCount; i++) {
String key = rs.getString(i);
System.out.println("KEY " + i + " = " + key);
}
} while(rs.next());
}
else {
System.out.println("NO KEYS WERE GENERATED.");
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}