Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 értékek elérhetővé tétele IDENTITY olyan alkalmazások számára, amelyek egy adatbázistáblát frissítenek anélkül, hogy lekérdezésre és a kiszolgálóra történő második oda-visszaútra kellene utazniuk.
Mivel az SQL Server nem támogatja az azonosítók pszeudooszlopait, az automatikus generált kulcsfunkciót használó frissítéseknek egy oszlopot tartalmazó táblázaton IDENTITY kell működniük. SQL Server táblánként csak egyetlen IDENTITY oszlopot engedélyez. Az SQLServerStatementosztály getGeneratedKeys módszere által visszaadott eredményhalmaznak csak egy oszlopa van, amelynek oszlop neve GENERATED_KEYS. A JDBC Driver 13.6-os verziójától kezdve, ha egy olyan utasításhoz kérnek generált kulcsokat, amely nem generál IDENTITY értéket, az illesztőprogram egy nem null értékű, üres eredményhalmazt ad vissza, és a ResultSet.next()false értéket 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ó nyílt kapcsolat kerül a függvénybe, létrejön egy SQL-utasítás, amely adatokat ad hozzá a táblához, majd fut az utasítás, é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();
}
}