Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
JDBC-illesztőprogram letöltése
Az SQL Serverhez készült Microsoft JDBC-illesztőprogram támogatja az opcionális JDBC 3.0 API-kat az automatikusan létrehozott sorazonosítók lekéréséhez. Ennek a funkciónak a fő értéke, hogy lehetővé teszi az identitásértékek elérhetővé tétele olyan alkalmazások számára, amelyek egy adatbázistáblát frissítenek lekérdezés és egy második oda-visszaút nélkül a kiszolgálón.
Mivel az SQL Server nem támogatja az azonosítók pszeudooszlopait, az automatikus kulcsfunkciót használó frissítéseknek egy IDENTITÁS oszlopot tartalmazó táblán kell működniük. Az SQL Server táblánként csak egyetlen IDENTITÁS oszlopot engedélyez. Az SQLServerStatement osztály getGeneratedKeys metódusa által visszaadott eredményhalmaznak csak egy oszlopa lesz, a visszaadott oszlop neve GENERATED_KEYS. Ha a létrehozott kulcsok olyan táblán vannak kérve, amely nem tartalmaz IDENTITÁS oszlopot, a JDBC-illesztő null eredményhalmazt ad vissza.
Példaként hozza létre a következő táblázatot az AdventureWorks2025 mintaadatbázisban:
CREATE TABLE TestTable
(Col1 int IDENTITY,
Col2 varchar(50),
Col3 int);
Az alábbi példában az AdventureWorks2025 mintaadatbázishoz való nyitott kapcsolatot a rendszer átadja a függvénynek, létrehoz egy SQL-utasítást, amely adatokat ad hozzá a táblához, majd futtatja az utasítást, és megjelenik az IDENTITY oszlop értéke.
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();
}
}