Referensi Always Encrypted API untuk driver JDBC
Always Encrypted memungkinkan klien mengenkripsi data sensitif di dalam aplikasi klien dan tidak pernah mengungkapkan kunci enkripsi ke server. Driver yang diaktifkan Always Encrypted yang diinstal pada komputer klien mencapai fungsionalitas ini dengan mengenkripsi dan mendekripsi data sensitif secara otomatis dalam aplikasi klien.
Driver mengenkripsi data dalam kolom sensitif sebelum meneruskan data ke SQL Server, dan secara otomatis menulis ulang kueri untuk mempertahankan semantik ke aplikasi. Demikian pula, driver secara transparan mendekripsi data yang disimpan dalam kolom database terenkripsi yang berada dalam hasil kueri. Untuk informasi selengkapnya, lihat Always Encrypted (Mesin Database) dan Menggunakan Always Encrypted dengan Driver JDBC.
Catatan
Always Encrypted hanya didukung oleh Microsoft JDBC Driver 6.0 atau yang lebih tinggi untuk SQL Server dengan Azure SQL Database dan SQL Server 2016 dan yang lebih tinggi.
Referensi Always Encrypted API
Ada beberapa penambahan dan modifikasi baru pada API driver JDBC untuk digunakan dalam aplikasi klien yang menggunakan Always Encrypted.
Kelas SQLServerConnection
Nama | Deskripsi |
---|---|
Kata kunci string koneksi baru: columnEncryptionSetting |
columnEncryptionSetting=Enabled memungkinkan fungsionalitas Always Encrypted untuk koneksi dan columnEncryptionSetting=Disabled menonaktifkannya. Nilai yang diterima diaktifkan/dinonaktifkan. Defaultnya adalah Dinonaktifkan. |
Kata kunci string koneksi baru:(MS JDBC 7.4 dan seterusnya) keyVaultProviderClientId keyVaultProviderClientKey |
keyVaultProviderClientId=<ClientID>; keyVaultProviderClientKey=<ClientKey> Mendaftarkan SQLServerColumnEncryptionAzureKeyVaultProvider dan menggunakan nilai ClientID dan ClientKey untuk mengambil Kunci Master Kolom dari Azure Key Vault |
Metode baru:public static void setColumnEncryptionTrustedMasterKeyPaths(Map<String, List\<String>> trustedKeyPaths) public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, List\<String> trustedKeyPaths) public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) |
Memungkinkan Anda mengatur/memperbarui/menghapus daftar jalur kunci tepercaya untuk server database. Jika saat memproses kueri aplikasi, driver menerima jalur kunci yang tidak ada dalam daftar, kueri akan gagal. Properti ini memberikan perlindungan ekstra terhadap serangan keamanan yang melibatkan server yang disusupi yang mengirim jalur kunci palsu, yang dapat menyebabkan kebocoran kredensial penyimpanan kunci. |
Metode baru:public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths() |
Mengembalikan daftar jalur kunci tepercaya untuk server database. |
Metode baru:public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Memungkinkan Anda mendaftarkan penyedia penyimpanan kunci kustom. Ini adalah kamus yang memetakan nama penyedia penyimpanan kunci ke implementasi penyedia penyimpanan kunci. Untuk menggunakan penyimpanan kunci JVM, Anda perlu membuat instans objek SQLServerColumnEncryptionJVMKeyStoreProvider dengan kredensial keystore JVM dan mendaftarkannya dengan driver. Nama untuk penyedia ini harus 'MSSQL_JVM_KEYSTORE'. Untuk menggunakan penyimpanan Azure Key Vault, Anda perlu membuat instans objek SQLServerColumnEncryptionAzureKeyStoreProvider dan mendaftarkannya dengan driver. Nama untuk penyedia ini harus 'AZURE_KEY_VAULT'. |
Metode baru:public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Memungkinkan Anda membatalkan pendaftaran semua penyedia penyimpanan kunci kustom dengan menghapus kamus yang memetakan nama penyedia penyimpanan kunci ke implementasi penyedia penyimpanan kunci. |
public final boolean getSendTimeAsDatetime() |
Mengembalikan pengaturan properti koneksi sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Memodifikasi pengaturan properti koneksi sendTimeAsDatetime. |
Kelas SQLServerConnectionPoolProxy
Nama | Deskripsi |
---|---|
public final boolean getSendTimeAsDatetime() |
Mengembalikan pengaturan properti koneksi sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Memodifikasi pengaturan properti koneksi sendTimeAsDatetime. |
Kelas SQLServerDataSource
Nama | Deskripsi |
---|---|
public void setColumnEncryptionSetting(String columnEncryptionSetting) |
Mengaktifkan/menonaktifkan fungsionalitas Always Encrypted untuk objek sumber data. Defaultnya adalah Dinonaktifkan. |
public String getColumnEncryptionSetting() |
Mengambil pengaturan fungsionalitas Always Encrypted untuk objek sumber data. |
public void setKeyStoreAuthentication(String keyStoreAuthentication) |
Mengatur nama yang mengidentifikasi penyimpanan kunci. Hanya nilai yang didukung adalah JavaKeyStorePassword untuk mengidentifikasi Java Key Store. Standarnya adalah null. |
public String getKeyStoreAuthentication() |
Mendapatkan nilai pengaturan keyStoreAuthentication untuk objek sumber data. |
public void setKeyStoreSecret(String keyStoreSecret) |
Mengatur kata sandi untuk keystore Java. Kata sandi untuk keystore dan kunci harus sama. keyStoreAuthentication harus diatur dengan JavaKeyStorePassword. |
public void setKeyStoreLocation(String keyStoreLocation) |
Mengatur lokasi termasuk nama file untuk keystore Java. keyStoreAuthentication harus diatur dengan JavaKeyStorePassword. |
public String getKeyStoreLocation() |
Mengambil keyStoreLocation untuk Java Key Store. |
Kelas SQLServerColumnEncryptionJavaKeyStoreProvider
Implementasi penyedia penyimpanan kunci untuk Java Key Store. Kelas ini memungkinkan penggunaan sertifikat yang disimpan di keystore Java sebagai kunci master kolom.
Konstruktor:
Nama | Deskripsi |
---|---|
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) |
Penyedia penyimpanan kunci untuk Java Key Store. |
Metode:
Nama | Deskripsi |
---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Mendekripsi nilai terenkripsi yang ditentukan dari kunci enkripsi kolom. Nilai terenkripsi diharapkan dienkripsi menggunakan sertifikat dengan jalur kunci yang ditentukan dan menggunakan algoritma yang ditentukan. Jalur kunci harus dalam salah satu format berikut: Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (Mengambil alih SQLServerColumnEncryptionKeyStoreProvider . decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) |
Mengenkripsi kunci enkripsi kolom menggunakan sertifikat dengan jalur kunci yang ditentukan dan menggunakan algoritma yang ditentukan. Jalur kunci harus dalam salah satu format berikut: Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (Mengambil alih SQLServerColumnEncryptionKeyStoreProvider . encryptColumnEncryptionKey(String, String, Byte[]).) |
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) |
Memverifikasi tanda tangan kunci enkripsi kolom menggunakan sertifikat. Jalur kunci harus dalam salah satu format berikut: Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (Mengambil alih SQLServerColumnEncryptionKeyStoreProvider . verifyColumnEncryptionKey(String, boolean, Byte[]).) |
public void setName (String name) |
Menyetel nama penyedia penyimpanan kunci ini. |
public String getName () |
Mendapatkan nama penyedia penyimpanan kunci ini. |
Kelas SQLServerColumnEncryptionAzureKeyVaultProvider
Implementasi penyedia penyimpanan kunci untuk Azure Key Vault. Kelas ini memungkinkan penggunaan kunci yang disimpan di Azure Key Vault sebagai kunci master kolom.
Konstruktor:
Nama | Deskripsi |
---|---|
public SQLServerColumnEncryptionAzureKeyVaultProvider () |
Membuat SQLServerColumnEncryptionAzureKeyVaultProvider untuk mengautentikasi ke Azure Key Vault. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) |
Membuat SQLServerColumnEncryptionAzureKeyVaultProvider untuk mengautentikasi ke Azure Key Vault menggunakan pengidentifikasi klien yang meminta token. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) |
Membuat SQLServerColumnEncryptionAzureKeyVaultProvider untuk mengautentikasi ke Azure Key Vault menggunakan pengidentifikasi dan kunci klien yang meminta token. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) |
Membuat SQLServerColumnEncryptionAzureKeyVaultProvider untuk mengautentikasi ke Azure Key Vault menggunakan TokenCredential yang disediakan. |
Metode:
Nama | Deskripsi |
---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Mendekripsi kunci enkripsi kolom terenkripsi (CEK). Dekripsi ini dicapai dengan algoritma enkripsi RSA yang menggunakan kunci asimetris yang ditentukan oleh jalur kunci master. (Mengambil alih SQLServerColumnEncryptionKeyStoreProvider . decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Mengenkripsi kunci enkripsi kolom, dengan memberikan kunci master kolom yang ditentukan ke algoritma yang ditentukan. (Mengambil alih SQLServerColumnEncryptionKeyStoreProvider . encryptColumnEncryptionKey(String, String, Byte[]).) |
public void setName (String name) |
Menyetel nama penyedia penyimpanan kunci ini. |
public String getName () |
Mendapatkan nama penyedia penyimpanan kunci ini. |
Antarmuka SQLServerKeyVaultAuthenticationCallback
Antarmuka ini berisi satu metode untuk autentikasi Azure Key Vault, yang akan diimplementasikan oleh pengguna.
Metode:
Nama | Deskripsi |
---|---|
public String getAccessToken(String authority, String resource, String scope); |
Metode harus ditimpa. Metode ini digunakan untuk mendapatkan token akses ke Azure Key Vault. |
Kelas SQLServerColumnEncryptionKeyStoreProvider
Perluas kelas ini untuk mengimplementasikan penyedia penyimpanan kunci kustom.
Nama | Deskripsi |
---|---|
SQLServerColumnEncryptionKeyStoreProvider | Kelas dasar untuk semua penyedia penyimpanan kunci. Penyedia kustom harus berasal dari kelas ini dan mengambil alih fungsi anggotanya lalu mendaftarkannya menggunakan SQLServerConnection. registerColumnEncryptionKeyStoreProviders(). |
Metode:
Nama | Deskripsi |
---|---|
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) |
Metode kelas dasar untuk mendekripsi nilai terenkripsi yang ditentukan dari kunci enkripsi kolom. Nilai terenkripsi diharapkan dienkripsi menggunakan kunci master kolom dengan jalur kunci yang ditentukan dan algoritma yang ditentukan. |
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Metode kelas dasar untuk mengenkripsi kunci enkripsi kolom menggunakan kunci master kolom dengan jalur kunci yang ditentukan dan menggunakan algoritma yang ditentukan. |
public abstract void setName(String name) |
Menyetel nama penyedia penyimpanan kunci ini. |
public abstract String getName() |
Mendapatkan nama penyedia penyimpanan kunci ini. |
Metode baru atau kelebihan beban di kelas SQLServerPreparedStatement
Nama | Deskripsi |
---|---|
public void setBigDecimal(int parameterIndex, BigDecimal x, int precision, int scale) public void setObject(int parameterIndex, Object x, int targetSqlType, Integer precision, int scale) public void setObject(int parameterIndex, Object x, SQLType targetSqlType, Integer precision, Integer scale) public void setTime(int parameterIndex, java.sql.Time x, int scale) public void setTimestamp(int parameterIndex, java.sql.Timestamp x, int scale) public void setDateTimeOffset(int parameterIndex, microsoft.sql.DateTimeOffset x, int scale) |
Metode ini kelebihan beban dengan presisi atau argumen skala atau keduanya untuk mendukung Always Encrypted untuk jenis data tertentu yang memerlukan informasi presisi dan skala. |
public void setMoney(int parameterIndex, BigDecimal x) public void setSmallMoney(int parameterIndex, BigDecimal x) public void setUniqueIdentifier(int parameterIndex, String guid) public void setDateTime(int parameterIndex, java.sql.Timestamp x) public void setSmallDateTime(int parameterIndex, java.sql.Timestamp x) |
Metode ini menambahkan dukungan untuk Always Encrypted untuk uang jenis data, smallmoney, uniqueidentifier, datetime, dan smalldatetime. Metode yang ada setTimestamp() digunakan untuk mengirim nilai parameter ke kolom datetime2 terenkripsi. Untuk kolom tanggalwaktu terenkripsi dan smalldatetime, gunakan metode setDateTime() baru dan setSmallDateTime() masing-masing. |
public final void setBigDecimal(int parameterIndex, BigDecimal x, int precision, int scale, boolean forceEncrypt) public final void setMoney(int parameterIndex, BigDecimal x, boolean forceEncrypt) public final void setSmallMoney(int parameterIndex, BigDecimal x, boolean forceEncrypt) public final void setBoolean(int parameterIndex, boolean x, boolean forceEncrypt) public final void setByte(int parameterIndex, byte x, boolean forceEncrypt) public final void setBytes(int parameterIndex, byte x[], boolean forceEncrypt) public final void setUniqueIdentifier(int parameterIndex, String guid, boolean forceEncrypt) public final void setDouble(int parameterIndex, double x, boolean forceEncrypt) public final void setFloat(int parameterIndex, float x, boolean forceEncrypt) public final void setInt(int parameterIndex, int value, boolean forceEncrypt) public final void setLong(int parameterIndex, long x, boolean forceEncrypt) public final setObject(int parameterIndex, Object x, int targetSqlType, Integer precision, int scale, boolean forceEncrypt) public final void setObject(int parameterIndex, Object x, SQLType targetSqlType, Integer precision, Integer scale, boolean forceEncrypt) public final void setShort(int parameterIndex, short x, boolean forceEncrypt) public final void setString(int parameterIndex, String str, boolean forceEncrypt) public final void setNString(int parameterIndex, String value, boolean forceEncrypt) public final void setTime(int parameterIndex, java.sql.Time x, int scale, boolean forceEncrypt) public final void setTimestamp(int parameterIndex, java.sql.Timestamp x, int scale, boolean forceEncrypt) public final void setDateTimeOffset(int parameterIndex, microsoft.sql.DateTimeOffset x, int scale, boolean forceEncrypt) public final void setDateTime(int parameterIndex, java.sql.Timestamp x, boolean forceEncrypt) public final void setSmallDateTime(int parameterIndex, java.sql.Timestamp x, boolean forceEncrypt) public final void setDate(int parameterIndex, java.sql.Date x, java.util.Calendar cal, boolean forceEncrypt) public final void setTime(int parameterIndex, java.sql.Time x, java.util.Calendar cal, boolean forceEncrypt) public final void setTimestamp(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal, boolean forceEncrypt) |
Mengatur parameter bernama ke nilai java yang diberikan. Jika boolean forceEncrypt diatur ke true, parameter kueri hanya akan diatur jika kolom yang ditunjuk dienkripsi dan Always Encrypted diaktifkan pada koneksi atau pada pernyataan.Jika forceEncrypt boolean diatur ke false, driver tidak akan memaksa enkripsi pada parameter. |
Metode baru atau kelebihan beban di kelas SQLServerCallableStatement
Nama | Deskripsi |
---|---|
public void registerOutParameter(int parameterIndex, int sqlType, int precision, int scale) public void registerOutParameter(int parameterIndex, SQLType sqlType, int precision, int scale) public void registerOutParameter(String parameterName, int sqlType, int precision, int scale) public void registerOutParameter(String parameterName, SQLType sqlType, int precision, int scale) public void setBigDecimal(String parameterName, BigDecimal bd, int precision, int scale) public void setTime(String parameterName, java.sql.Time t, int scale) public void setTimestamp(String parameterName, java.sql.Timestamp t, int scale) public void setDateTimeOffset(String parameterName, microsoft.sql.DateTimeOffset t, int scale) public final void setObject(String sCol, Object x, int targetSqlType, Integer precision, int scale) |
Metode ini kelebihan beban dengan presisi atau argumen skala atau keduanya untuk mendukung Always Encrypted untuk jenis data tertentu yang memerlukan informasi presisi dan skala. |
public void setDateTime(String parameterName, java.sql.Timestamp x) public void setSmallDateTime(String parameterName, java.sql.Timestamp x) public void setUniqueIdentifier(String parameterName, String guid) public void setMoney(String parameterName, BigDecimal bd) public void setSmallMoney(String parameterName, BigDecimal bd) public Timestamp getDateTime(int index) public Timestamp getDateTime(String sCol) public Timestamp getDateTime(int index, Calendar cal) public Timestamp getSmallDateTime(int index) public Timestamp getSmallDateTime(String sCol) public Timestamp getSmallDateTime(int index, Calendar cal) public Timestamp getSmallDateTime(String name, Calendar cal) public BigDecimal getMoney(int index) public BigDecimal getMoney(String sCol) public BigDecimal getSmallMoney(int index) public BigDecimal getSmallMoney(String sCol) |
Metode ini menambahkan dukungan untuk Always Encrypted untuk uang jenis data, smallmoney, uniqueidentifier, datetime, dan smalldatetime. Metode yang ada setTimestamp() digunakan untuk mengirim nilai parameter ke kolom datetime2 terenkripsi. Untuk kolom tanggalwaktu terenkripsi dan smalldatetime, gunakan metode setDateTime() baru dan setSmallDateTime() masing-masing. |
public void setObject(String parameterName, Object o, int n, int m, boolean forceEncrypt) public void setObject(String parameterName, Object obj, SQLType jdbcType, int scale, boolean forceEncrypt) public void setDate(String parameterName, java.sql.Date x, Calendar c, boolean forceEncrypt) public void setTime(String parameterName, java.sql.Time t, int scale, boolean forceEncrypt) public void setTime(String parameterName, java.sql.Time x, Calendar c, boolean forceEncrypt) public void setDateTime(String parameterName, java.sql.Timestamp x, boolean forceEncrypt) public void setDateTimeOffset(String parameterName, microsoft.sql.DateTimeOffset t, int scale, boolean forceEncrypt) public void setSmallDateTime(String parameterName, java.sql.Timestamp x, boolean forceEncrypt) public void setTimestamp(String parameterName, java.sql.Timestamp t, int scale, boolean forceEncrypt) public void setTimestamp(String parameterName, java.sql.Timestamp x, boolean forceEncrypt) public void setUniqueIdentifier(String parameterName, String guid, boolean forceEncrypt) public void setBytes(String parameterName, byte[] b, boolean forceEncrypt) public void setByte(String parameterName, byte b, boolean forceEncrypt) public void setString(String parameterName, String s, boolean forceEncrypt) public final void setNString(String parameterName, String value, boolean forceEncrypt)<br /><br /> public void setMoney(String parameterName, BigDecimal bd, boolean forceEncrypt) public void setSmallMoney(String parameterName, BigDecimal bd, boolean forceEncrypt) public void setBigDecimal(String parameterName, BigDecimal bd, int precision, int scale, boolean forceEncrypt) public void setDouble(String parameterName, double d, boolean forceEncrypt) public void setFloat(String parameterName, float f, boolean forceEncrypt) public void setInt(String parameterName, int i, boolean forceEncrypt) public void setLong(String parameterName, long l, boolean forceEncrypt) public void setShort(String parameterName, short s, boolean forceEncrypt) public void setBoolean(String parameterNames, boolean b, boolean forceEncrypt) public void setTimeStamp(String sCol, java.sql.Timestamp x, Calendar c, Boolean forceEncrypt) |
Mengatur parameter bernama ke nilai java yang diberikan. Jika forceEncrypt boolean diatur ke true, parameter kueri hanya akan diatur jika kolom yang ditunjuk dienkripsi dan Always Encrypted diaktifkan pada koneksi atau pada pernyataan. Jika forceEncrypt boolean diatur ke false, driver tidak akan memaksa enkripsi pada parameter. |
Metode baru atau kelebihan beban di kelas SQLServerResultSet
Nama | Deskripsi |
---|---|
public String getUniqueIdentifier(int columnIndex) public String getUniqueIdentifier(String columnLabel) public java.sql.Timestamp getDateTime(int columnIndex) public java.sql.Timestamp getDateTime(String columnName) public java.sql.Timestamp getDateTime(int columnIndex, Calendar cal) public java.sql.Timestamp getDateTime(String colName, Calendar cal) public java.sql.Timestamp getSmallDateTime(int columnIndex) public java.sql.Timestamp getSmallDateTime(String columnName) public java.sql.Timestamp getSmallDateTime(int columnIndex, Calendar cal) public java.sql.Timestamp getSmallDateTime(String colName, Calendar cal) public BigDecimal getMoney(int columnIndex) public BigDecimal getMoney(String columnName) public BigDecimal getSmallMoney(int columnIndex) public BigDecimal getSmallMoney(String columnName) public void updateMoney(String columnName, BigDecimal x) public void updateSmallMoney(String columnName, BigDecimal x) public void updateDateTime(int index, java.sql.Timestamp x) public void updateSmallDateTime(int index, java.sql.Timestamp x) |
Metode ini menambahkan dukungan untuk Always Encrypted untuk uang jenis data, smallmoney, uniqueidentifier, datetime, dan smalldatetime. Metode yang ada updateTimestamp() digunakan untuk memperbarui kolom datetime2 terenkripsi. Untuk kolom tanggalwaktu terenkripsi dan smalldatetime, gunakan metode updateDateTime() baru dan updateSmallDateTime() masing-masing. |
public void updateBoolean(int index, boolean x, boolean forceEncrypt) public void updateByte(int index, byte x, boolean forceEncrypt) public void updateShort(int index, short x, boolean forceEncrypt) public void updateInt(int index, int x, boolean forceEncrypt) public void updateLong(int index, long x, boolean forceEncrypt) public void updateFloat(int index, float x, boolean forceEncrypt) public void updateDouble(int index, double x, boolean forceEncrypt) public void updateMoney(int index, BigDecimal x, boolean forceEncrypt) public void updateMoney(String columnName, BigDecimal x, boolean forceEncrypt) public void updateSmallMoney(int index, BigDecimal x, boolean forceEncrypt) public void updateSmallMoney(String columnName, BigDecimal x, boolean forceEncrypt) public void updateBigDecimal(int index, BigDecimal x, Integer precision, Integer scale, boolean forceEncrypt) public void updateString(int columnIndex, String stringValue, boolean forceEncrypt) public void updateNString(int columnIndex, String nString, boolean forceEncrypt) public void updateNString(String columnLabel, String nString, boolean forceEncrypt) public void updateBytes(int index, byte x[], boolean forceEncrypt) <br/><br/> public void updateDate(int index, java.sql.Date x, boolean forceEncrypt) public void updateTime(int index, java.sql.Time x, Integer scale, boolean forceEncrypt) public void updateTimestamp(int index, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTime(int index, java.sql.Timestamp x, Integer scale, boolean forceEncrypt) public void updateSmallDateTime(int index, java.sql.Timestamp x, Integer scale, boolean forceEncrypt) public void updateDateTimeOffset(int index, microsoft.sql.DateTimeOffset x, Integer scale, boolean forceEncrypt) public void updateUniqueIdentifier(int index, String x, boolean forceEncrypt) public void updateObject(int index, Object x, int precision, int scale, boolean forceEncrypt) public void updateObject(int index, Object obj, SQLType targetSqlType, int scale, boolean forceEncrypt) public void updateBoolean(String columnName, boolean x, boolean forceEncrypt) public void updateByte(String columnName, byte x, boolean forceEncrypt) public void updateShort(String columnName, short x, boolean forceEncrypt) public void updateInt(String columnName, int x, boolean forceEncrypt) public void updateLong(String columnName, long x, boolean forceEncrypt) public void updateFloat(String columnName, float x, boolean forceEncrypt) public void updateDouble(String columnName, double x, boolean forceEncrypt) <br/><br/> public void updateBigDecimal(String columnName, BigDecimal x, boolean forceEncrypt) public void updateBigDecimal(String columnName, BigDecimal x, Integer precision, Integer scale, boolean forceEncrypt) public void updateString(String columnName, String x, boolean forceEncrypt) public void updateBytes(String columnName, byte x[], boolean forceEncrypt) public void updateDate(String columnName, java.sql.Date x, boolean forceEncrypt) public void updateTime(String columnName, java.sql.Time x, int scale, boolean forceEncrypt) public void updateTimestamp(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTime(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateSmallDateTime(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTimeOffset(String columnName, microsoft.sql.DateTimeOffset x, int scale, boolean forceEncrypt) public void updateUniqueIdentifier(String columnName, String x, boolean forceEncrypt) public void updateObject(String columnName, Object x, int precision, int scale, boolean forceEncrypt) public void updateObject(String columnName, Object obj, SQLType targetSqlType, int scale, boolean forceEncrypt) |
Memperbarui kolom bernama ke nilai java yang diberikan. Jika boolean forceEncrypt diatur ke true, kolom hanya akan diatur jika dienkripsi dan Always Encrypted diaktifkan pada koneksi atau pada pernyataan.Jika boolean forceEncrypt diatur ke false, driver tidak akan memaksa enkripsi pada parameter. |
Jenis baru di kelas microsoft.sql.Type
Nama | Deskripsi |
---|---|
DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID | Gunakan jenis ini sebagai jenis SQL target saat mengirim nilai parameter ke tanggalwaktu terenkripsi , smalldatetime, uang, smallmoney, kolom pengidentifikasi unik menggunakan setObject()/updateObject() metode API. |
SQLServerStatementColumnEncryptionSetting Enum
Menentukan bagaimana data akan dikirim dan diterima saat membaca dan menulis kolom terenkripsi. Bergantung pada kueri spesifik Anda, dampak performa dapat dikurangi dengan melewati pemrosesan driver Always Encrypted saat kolom yang tidak dienkripsi sedang digunakan. Pengaturan ini tidak dapat digunakan untuk melewati enkripsi dan mendapatkan akses ke data teks biasa.
Sintaks:
Public enum SQLServerStatementColumnEncryptionSetting
Anggota:
Nama | Deskripsi |
---|---|
UseConnectionSetting | Menentukan bahwa perintah harus default ke pengaturan Always Encrypted di string koneksi. |
Diaktifkan | Mengaktifkan Always Encrypted untuk kueri. |
ResultSetOnly | Menentukan bahwa hanya hasil perintah yang harus diproses oleh rutinitas Always Encrypted di driver. Gunakan nilai ini ketika perintah tidak memiliki parameter yang memerlukan enkripsi. |
Nonaktif | Menonaktifkan Always Encrypted untuk kueri. |
Pengaturan tingkat pernyataan untuk AE ditambahkan ke kelas SQLServerConnection dan ke kelas SQLServerConnectionPoolProxy. Metode berikut di kelas ini kelebihan beban dengan pengaturan baru.
Nama | Deskripsi |
---|---|
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Membuat objek Pernyataan yang akan menghasilkan objek ResultSet dengan jenis tertentu, konkurensi, daya tahan, dan pengaturan enkripsi kolom. |
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetiing) |
Membuat objek CallableStatement dengan pengaturan enkripsi kolom tertentu yang akan menghasilkan objek ResultSet dengan jenis, konkurensi, dan tahanan yang diberikan. |
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Membuat objek PreparedStatement dengan pengaturan enkripsi kolom tertentu yang memiliki kemampuan untuk mengambil kunci yang dibuat secara otomatis. |
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Membuat objek PreparedStatement dengan pengaturan enkripsi kolom tertentu yang akan menghasilkan objek ResultSet dengan nama kolom yang diberikan. |
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting |
Membuat objek PreparedStatement dengan pengaturan enkripsi kolom tertentu yang akan menghasilkan objek ResultSet dengan indeks kolom yang diberikan. |
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Membuat objek PreparedStatement dengan pengaturan enkripsi kolom tertentu yang akan menghasilkan objek ResultSet dengan jenis, konkurensi, dan tahanan yang diberikan. |
Catatan
Jika Always Encrypted dinonaktifkan untuk kueri dan kueri memiliki parameter yang perlu dienkripsi (parameter yang sesuai dengan kolom terenkripsi), kueri akan gagal.
Jika Always Encrypted dinonaktifkan untuk kueri dan kueri mengembalikan hasil dari kolom terenkripsi, kueri akan mengembalikan nilai terenkripsi. Nilai terenkripsi akan memiliki jenis data varbinary.