Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il JDBC Driver per SQL Server supporta le API JDBC 3.0 facoltative per il recupero degli identificatori di riga generati automaticamente. Il valore principale di questa funzionalità consiste nel fornire un modo per rendere IDENTITY disponibili i valori a un'applicazione che aggiorna una tabella di database senza richiedere una query e un secondo round trip al server.
Poiché SQL Server non supporta pseudocolonne per identificatori, gli aggiornamenti che utilizzano la funzione chiave generata automaticamente devono operare su una tabella che contiene una IDENTITY colonna. SQL Server consente solo una singola IDENTITY colonna per tabella. L'insieme di risultati restituito dal metodo getGeneratedKeys della classe SQLServerStatement ha una sola colonna, con il nome GENERATED_KEYSdella colonna . A partire dal driver JDBC 13.6, se vengono richieste chiavi generate per un'istruzione che non genera un IDENTITY valore, il driver restituisce un insieme di risultati vuoto non nullo e ResultSet.next() restituisce false.
Ad esempio, creare la tabella seguente nel database di esempio AdventureWorks2025:
CREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
Nell'esempio seguente viene passata una connessione aperta al database di esempio AdventureWorks2025 alla funzione , viene costruita un'istruzione SQL che aggiunge dati alla tabella e quindi viene eseguita l'istruzione e viene visualizzato il valore della IDENTITY colonna.
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();
}
}