Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Microsoft JDBC Driver para SQL Server oferece suporte às APIs opcionais do JDBC 3.0 para recuperar identificadores de linha gerados automaticamente. O principal valor desse recurso é fornecer uma maneira de disponibilizar IDENTITY valores para um aplicativo que está atualizando uma tabela de banco de dados sem a necessidade de uma consulta e uma segunda viagem de ida e volta para o servidor.
Como SQL Server não dá suporte a pseudo-colunas para identificadores, as atualizações que precisam usar o recurso de chave gerada automaticamente devem operar em uma tabela que contenha uma IDENTITY coluna. SQL Server permite apenas uma única IDENTITY coluna por tabela. O conjunto de resultados retornado pelo método getGeneratedKeys da classe SQLServerStatement só terá uma coluna, com o nome de coluna retornado GENERATED_KEYS. Se as chaves geradas forem solicitadas em uma tabela sem IDENTITY coluna, o driver JDBC retornará um conjunto de resultados nulo.
Por exemplo, crie a tabela a seguir no banco de dados de exemplo AdventureWorks2025:
CREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
No exemplo a seguir, uma conexão aberta com o banco de dados de exemplo AdventureWorks2025 é passada para a função, uma instrução SQL é construída que adicionará dados à tabela e, em seguida, a instrução é executada e o valor da IDENTITY coluna é exibido.
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();
}
}