Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Драйвер Microsoft JDBC Driver for SQL Server поддерживает дополнительный API-интерфейсы JDBC 3.0 для получения автоматически создаваемых идентификаторов строк. Главным преимуществом этой функции является доступность значений IDENTITY для приложения, которое обновляет таблицу базы данных, без необходимости отправлять запрос и вторично обращаться к серверу.
Так как SQL Server не поддерживает псевдостолбцы для идентификаторов, то обновления, использующие функцию автоматического создания ключей, должны работать с таблицей, содержащей столбец IDENTITY. SQL Server позволяет иметь только один столбец IDENTITY в каждой таблице. Результирующий набор, возвращаемый методом getGeneratedKeys класса SQLServerStatement, будет содержать только один столбец, а именем возвращаемого столбца будет GENERATED_KEYS. Если созданные ключи запрашиваются для таблицы без столбца IDENTITY, то драйвер JDBC возвращает результирующий набор со значением NULL.
Например, создайте следующую таблицу в примере базы данных AdventureWorks2025:
CREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
В следующем примере открытое подключение к образцу базы данных AdventureWorks2025 передается в функцию, инструкция SQL создается, которая будет добавлять данные в таблицу, а затем выполняется инструкция и отображается значение столбца IDENTITY.
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();
}
}