Bagikan melalui


Menggunakan kunci yang dihasilkan secara otomatis

Unduh driver JDBC

Microsoft JDBC Driver untuk SQL Server mendukung API JDBC 3.0 opsional untuk mengambil pengidentifikasi baris yang dihasilkan secara otomatis. Nilai utama fitur ini adalah menyediakan cara untuk membuat nilai IDENTITY tersedia untuk aplikasi yang memperbarui tabel database tanpa memerlukan kueri dan perjalanan pulang pergi kedua ke server.

Karena SQL Server tidak mendukung kolom pseudo untuk pengidentifikasi, pembaruan yang harus menggunakan fitur kunci yang dibuat secara otomatis harus beroperasi terhadap tabel yang berisi kolom IDENTITY. SQL Server hanya mengizinkan satu kolom IDENTITY per tabel. Kumpulan hasil yang dikembalikan oleh metode getGeneratedKeys dari kelas SQLServerStatement hanya akan memiliki satu kolom, dengan nama kolom yang dikembalikan GENERATED_KEYS. Jika kunci yang dihasilkan diminta pada tabel yang tidak memiliki kolom IDENTITY, driver JDBC akan mengembalikan tataan hasil null.

Sebagai contoh, buat tabel berikut di database sampel AdventureWorks2022:

CREATE TABLE TestTable
   (Col1 int IDENTITY,
    Col2 varchar(50),
    Col3 int);  

Dalam contoh berikut, koneksi terbuka ke database sampel AdventureWorks2022 diteruskan ke fungsi, pernyataan SQL dibuat yang akan menambahkan data ke tabel, lalu pernyataan dijalankan dan nilai kolom IDENTITY ditampilkan.

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

Lihat juga

Menggunakan pernyataan dengan driver JDBC