Aracılığıyla paylaş


Otomatik oluşturulan anahtarları kullanma

JDBC sürücüsünü indirin

SQL Server için Microsoft JDBC Sürücüsü, otomatik olarak oluşturulan satır tanımlayıcılarını almak için isteğe bağlı JDBC 3.0 API'lerini destekler. Bu özelliğin ana değeri, bir sorgu ve sunucuya ikinci bir gidiş dönüş gerektirmeden bir veritabanı tablosunu güncelleştiren bir uygulama için KIMLIK değerlerini kullanılabilir hale getirmenin bir yolunu sağlamaktır.

SQL Server tanımlayıcılar için sahte sütunları desteklemediğinden, otomatik oluşturulan anahtar özelliğini kullanması gereken güncelleştirmeler, IDENTITY sütunu içeren bir tabloda çalıştırılmalıdır. SQL Server, tablo başına yalnızca tek bir IDENTITY sütununa izin verir. SQLServerStatement sınıfının getGeneratedKeys yöntemi tarafından döndürülen sonuç kümesinin tek bir sütunu olur ve döndürülen sütun adı GENERATED_KEYS olur. Oluşturulan anahtarlar IDENTITY sütunu olmayan bir tabloda istenirse, JDBC sürücüsü null bir sonuç kümesi döndürür.

Örneğin, AdventureWorks2025 örnek veritabanında aşağıdaki tabloyu oluşturun:

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

Aşağıdaki örnekte, AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir, tabloya veri ekleyecek bir SQL deyimi oluşturulur ve ardından deyimi çalıştırılır ve IDENTITY sütun değeri görüntülenir.

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

Ayrıca bakınız

JDBC sürücüsüyle deyimleri kullanma