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 pseudo colonne per gli identificatori, gli aggiornamenti che devono usare la funzionalità chiave generata automaticamente devono operare su una tabella contenente una IDENTITY colonna. SQL Server consente solo una singola IDENTITY colonna per tabella. Il set di risultati restituito dal metodo getGeneratedKeys della classe SQLServerStatement conterrà una sola colonna, con GENERATED_KEYS come nome di colonna restituito. Se le chiavi generate vengono richieste in una tabella senza IDENTITY colonna, il driver JDBC restituirà un set di risultati Null.
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();
}
}