Megosztás:


Automatikusan létrehozott kulcsok használata

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();
    }
}

Lásd még

Utasítások használata a JDBC-illesztővel