Always Encrypted: API-Referenz für den JDBC-TreiberAlways Encrypted API reference for the JDBC driver

HerunterladenJDBC-Treiber herunterladenDownloadDownload JDBC Driver

Always Encrypted ermöglicht es Clients, vertrauliche Daten in Clientanwendungen zu verschlüsseln und die Verschlüsselungsschlüssel niemals an den Server weiterzugeben.Always Encrypted allows clients to encrypt sensitive data inside client applications and never reveal the encryption keys to the server. Ein auf dem Clientcomputer installierter Treiber, bei dem Always Encrypted aktiviert ist, erreicht diese Funktionalität durch die automatische Ver- und Entschlüsselung von vertraulichen Daten in der Clientanwendung.An Always Encrypted enabled driver installed on the client computer achieves this functionality by automatically encrypting and decrypting sensitive data in the client application.

Der Treiber verschlüsselt die Daten in vertraulichen Spalten, bevor er sie an SQL Server übergibt, und generiert Abfragen automatisch erneut, um die Semantik der Anwendung beizubehalten.The driver encrypts the data in sensitive columns before passing the data to SQL Server, and automatically rewrites queries to preserve the semantics to the application. Auf ähnliche Weise entschlüsselt der Treiber transparent Daten in verschlüsselten Datenbankspalten, die in Abfrageergebnissen enthalten sind.Similarly, the driver transparently decrypts data stored in encrypted database columns that are in query results. Weitere Informationen finden Sie unter Always Encrypted (Datenbank-Engine) und Verwenden von Always Encrypted mit dem JDBC-Treiber.For more information, see Always Encrypted (Database Engine) and Using Always Encrypted with the JDBC Driver.

Hinweis

Always Encrypted wird nur vom Microsoft JDBC-Treiber 6.0 oder höher für SQL Server mit Azure SQL-Datenbank und SQL Server 2016 und höher unterstützt.Always Encrypted is supported only by Microsoft JDBC Driver 6.0 or higher for SQL Server with Azure SQL Database and SQL Server 2016 and higher.

Always Encrypted: API-ReferenzenAlways Encrypted API references

Für Clientanwendungen, die „Immer verschlüsselt“ verwenden, sind mehrere neue Erweiterungen und Änderungen der JDBC-Treiber-API verfügbar.There are several new additions and modifications to the JDBC driver API for use in client applications that use Always Encrypted.

SQLServerConnection-KlasseSQLServerConnection class

NameName BESCHREIBUNGDescription
Neues Verbindungszeichenfolgen-Schlüsselwort:New connection string keyword:

columnEncryptionSettingcolumnEncryptionSetting
columnEncryptionSetting=Enabled aktiviert die Always Encrypted-Funktionalität für die Verbindung, und columnEncryptionSetting=Disabled deaktiviert sie.columnEncryptionSetting=Enabled enables Always Encrypted functionality for the connection and columnEncryptionSetting=Disabled disables it. Zulässige Werte sind „Enabled“/„Disabled“.Accepted values are Enabled/Disabled. Der Standardwert ist „Disabled“.The default is Disabled.
Neues Schlüsselwort für Verbindungszeichenfolgen (ab MS JDBC 7.4)New connection string keyword:(MS JDBC 7.4 onwards)

keyVaultProviderClientIdkeyVaultProviderClientId

keyVaultProviderClientKeykeyVaultProviderClientKey
keyVaultProviderClientId=<ClientID>;keyVaultProviderClientKey=<ClientKey>keyVaultProviderClientId=<ClientID>;keyVaultProviderClientKey=<ClientKey>

Registriert den SQLServerColumnEncryptionAzureKeyVaultProvider und verwendet die Werte von ClientID und ClientKey zum Abrufen des Spaltenhauptschlüssel aus Azure Key Vault.Registers SQLServerColumnEncryptionAzureKeyVaultProvider and uses ClientID and ClientKey values to retrieve Column Master Key from Azure Key Vault
Neue Methoden:New methods:

public static void setColumnEncryptionTrustedMasterKeyPaths(Map<String, List\<String>> trustedKeyPaths)

public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, List\<String> trustedKeyPaths)

public static void removeColumnEncryptionTrustedMasterKeyPaths(String server)
Ermöglicht Ihnen, eine Liste von vertrauenswürdigen Schlüsselpfaden für einen Datenbankserver festzulegen bzw. zu aktualisieren oder zu entfernen.Allows you to set/update/remove a list of trusted key paths for a database server. Wenn der Treiber während der Verarbeitung eine Anwendungsabfrage einen Schlüsselpfad erhält, der nicht in der Liste enthalten ist, schlägt die Abfrage fehl.If while processing an application query the driver receives a key path that's not on the list, the query will fail. Diese Eigenschaft bietet zusätzlichen Schutz vor Angriffen, bei denen ein kompromittierter Server gefälschte Schlüsselpfade bereitstellt, was zur Preisgabe der Anmeldeinformationen des Schlüsselspeichers führen kann.This property provides extra protection against security attacks that involve a compromised server sending fake key paths, which may lead to leaking key store credentials.
Neue Methode:New method:

public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths()
Gibt eine Liste von vertrauenswürdigen Schlüsselpfaden für einen Datenbankserver zurück.Returns a list of trusted key paths for a database server.
Neue Methode:New method:

public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Ermöglicht Ihnen, benutzerdefinierte Schlüsselspeicheranbieter zu registrieren.Allows you to register custom key store providers. Dies ist ein Wörterbuch, das Anbieternamen von Schlüsselspeichern Implementierungen von Schlüsselspeicheranbietern zuordnet.It's a dictionary that maps key store provider names to key store provider implementations.

Um JVM Key Store zu verwenden, müssen Sie ein JSQLServerColumnEncryptionJVMKeyStoreProvider-Objekt mit Anmeldeinformationen von JVM Key Store instanziieren und beim Treiber registrieren.To use the JVM key store, you need to instantiate a SQLServerColumnEncryptionJVMKeyStoreProvider object with JVM keystore credentials and register it with the driver. Der Name für diesen Anbieter muss „MSSQL_JVM_KEYSTORE“ sein.The name for this provider must be 'MSSQL_JVM_KEYSTORE'.

Um den Azure Key Vault-Speicher zu verwenden, müssen Sie ein SQLServerColumnEncryptionAzureKeyStoreProvider-Objekt instanziieren und beim Treiber registrieren.To use the Azure Key Vault store, you need to instantiate a SQLServerColumnEncryptionAzureKeyStoreProvider object and register it with the driver. Der Name für diesen Anbieter muss „AZURE_KEY_VAULT“ lauten.The name for this provider must be 'AZURE_KEY_VAULT'.
Neue Methode:New method:

public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Ermöglicht das Aufheben der Registrierung aller benutzerdefinierten Schlüsselspeicheranbieter durch Löschen des Wörterbuchs, das die Namen der Schlüsselspeicheranbieter den entsprechenden Implementierungen zuordnet.Allows you to unregister all the custom key store providers by clearing the dictionary that maps key store provider names to key store provider implementations.
public final boolean getSendTimeAsDatetime() Gibt die Einstellung der sendTimeAsDatetime-Verbindungseigenschaft zurück.Returns the setting of the sendTimeAsDatetime connection property.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Ändert die Einstellung der sendTimeAsDatetime-Verbindungseigenschaft.Modifies the setting of the sendTimeAsDatetime connection property.

SQLServerConnectionPoolProxy-KlasseSQLServerConnectionPoolProxy class

NameName BESCHREIBUNGDescription
public final boolean getSendTimeAsDatetime() Gibt die Einstellung der sendTimeAsDatetime-Verbindungseigenschaft zurück.Returns the setting of the sendTimeAsDatetime connection property.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Ändert die Einstellung der sendTimeAsDatetime-Verbindungseigenschaft.Modifies the setting of the sendTimeAsDatetime connection property.

SQLServerDataSource-KlasseSQLServerDataSource class

NameName BESCHREIBUNGDescription
public void setColumnEncryptionSetting(String columnEncryptionSetting) Aktiviert/deaktiviert die „Immer verschlüsselt“-Funktionalität für das Datenquellenobjekt.Enables/disables Always Encrypted functionality for the data source object.

Der Standardwert ist „Disabled“.The default is Disabled.
public String getColumnEncryptionSetting() Ruft die „Immer verschlüsselt“-Funktionalitätseinstellung für das Datenquellenobjekt ab.Retrieves the Always Encrypted functionality setting for the data source object.
public void setKeyStoreAuthentication(String keyStoreAuthentication) Legt den Namen fest, der einen Schlüsselspeicher bezeichnet.Sets the name that identifies a key store. Der einzige unterstützte Wert ist das JavaKeyStorePassword zum Identifizieren des Java-Keystores.Only value supported is the JavaKeyStorePassword for identifying the Java Key Store.

Der Standardwert ist NULL.The default is null.
public String getKeyStoreAuthentication() Ruft den Wert der keyStoreAuthentication-Einstellung für das Datenquellenobjekt ab.Gets the value of the keyStoreAuthentication setting for the data source object.
public void setKeyStoreSecret(String keyStoreSecret) Legt das Kennwort für den Java-Keystore fest.Sets the password for the Java keystore. Das Kennwort für den Keystore und für den Schlüssel müssen übereinstimmen.The password for the keystore and the key must be the same. keyStoreAuthentication muss auf JavaKeyStorePassword festgelegt werden.keyStoreAuthentication must be set with JavaKeyStorePassword.
public void setKeyStoreLocation(String keyStoreLocation) Legt den Speicherort einschließlich des Dateinamens für den Java-Keystore fest.Sets the location including the file name for the Java keystore. keyStoreAuthentication muss auf JavaKeyStorePassword festgelegt werden.keyStoreAuthentication must be set with JavaKeyStorePassword.
public String getKeyStoreLocation() Ruft den keyStoreLocation für den Java-Keystore ab.Retrieves the keyStoreLocation for the Java Key Store.

SQLServerColumnEncryptionJavaKeyStoreProvider-KlasseSQLServerColumnEncryptionJavaKeyStoreProvider class

Die Implementierung der Schlüsselspeicheranbieters für Java Key Store.The implementation of the key store provider for Java Key Store. Diese Klasse ermöglicht die Verwendung von Zertifikaten, die als CMKs im Java Keystore gespeichert wurden.This class enables using certificates stored in the Java keystore as column master keys.

Konstruktoren:Constructors:

NameName BESCHREIBUNGDescription
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) Keystoreanbieter für den Java-Keystore.Key store provider for the Java Key Store.

Methoden:Methods:

NameName BESCHREIBUNGDescription
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Entschlüsselt den angegebenen verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels.Decrypts the specified encrypted value of a column encryption key. Es wird erwartet, dass der verschlüsselte Wert mit dem Zertifikat mit dem angegebenen Schlüsselpfad und mit dem angegebenen Algorithmus verschlüsselt wird.The encrypted value is expected to be encrypted using the certificate with the specified key path and using the specified algorithm.

Der Schlüsselpfad sollte in einem der folgenden Formate vorliegen:The key path should be in one of the following formats:

Thumbprint:<certificate_thumbprint>Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>Alias:<certificate_alias>

(Setzt SQLServerColumnEncryptionKeyStoreProvider außer Kraft.(Overrides SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) Verschlüsselt einen Spaltenverschlüsselungsschlüssel mithilfe des Zertifikats mit dem angegebenen Schlüsselpfad und angegebenen Algorithmus.Encrypts a column encryption key using the certificate with the specified key path and using the specified algorithm.

Der Schlüsselpfad sollte in einem der folgenden Formate vorliegen:The key path should be in one of the following formats:

Thumbprint:<certificate_thumbprint>Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>Alias:<certificate_alias>

(Setzt SQLServerColumnEncryptionKeyStoreProvider außer Kraft.(Overrides SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).)encryptColumnEncryptionKey(String, String, Byte[]).)
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) Überprüft die Signatur des Spaltenverschlüsselungsschlüssels mithilfe des Zertifikats.Verifies the signature of the column encryption key using the certificate.

Der Schlüsselpfad sollte in einem der folgenden Formate vorliegen:The key path should be in one of the following formats:

Thumbprint:<certificate_thumbprint>Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>Alias:<certificate_alias>

(Setzt SQLServerColumnEncryptionKeyStoreProvider außer Kraft.(Overrides SQLServerColumnEncryptionKeyStoreProvider. verifyColumnEncryptionKey(String, boolean, Byte[]).)verifyColumnEncryptionKey(String, boolean, Byte[]).)
public void setName (String name) Legt den Namen dieses Keystoreanbieters fest.Sets the name of this key store provider.
public String getName () Ruft den Namen dieses Keystoreanbieters ab.Gets the name of this key store provider.

SQLServerColumnEncryptionAzureKeyVaultProvider-KlasseSQLServerColumnEncryptionAzureKeyVaultProvider class

Die Implementierung der Schlüsselspeicheranbieters für Azure Key Vault.The implementation of the key store provider for Azure Key Vault. Diese Klasse ermöglicht die Verwendung von Schlüsseln, die als Spaltenhauptschlüssel in Azure Key Vault gespeichert sind.This class enables using keys stored in the Azure Key Vault as column master keys.

Konstruktoren:Constructors:

NameName BeschreibungDescription
public SQLServerColumnEncryptionAzureKeyVaultProvider () Erstellt ein SQLServerColumnEncryptionAzureKeyVaultProvider-Objekt für die Authentifizierung bei Azure Key VaultConstructs a SQLServerColumnEncryptionAzureKeyVaultProvider to authenticate to Azure Key Vault.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) Erstellt ein SQLServerColumnEncryptionAzureKeyVaultProvider-Objekt für die Authentifizierung bei Azure Key Vault mithilfe des Bezeichners des Clients, der das Token anfordertConstructs a SQLServerColumnEncryptionAzureKeyVaultProvider to authenticate to Azure Key Vault using the identifier of the client requesting the token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) Erstellt ein SQLServerColumnEncryptionAzureKeyVaultProvider-Objekt für die Authentifizierung bei Azure Key Vault mithilfe des Bezeichners und des Schlüssels des Clients, der das Token anfordertConstructs a SQLServerColumnEncryptionAzureKeyVaultProvider to authenticate to Azure Key Vault using the identifier and the key of the client requesting the token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) Erstellt ein SQLServerColumnEncryptionAzureKeyVaultProvider-Objekt für die Authentifizierung bei Azure Key Vault mithilfe des angegebenen TokenCredential-ObjektsConstructs a SQLServerColumnEncryptionAzureKeyVaultProvider to authenticate to Azure Key Vault using provided TokenCredential.

Methoden:Methods:

NameName BeschreibungDescription
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Entschlüsselt einen verschlüsselten Spaltenverschlüsselungsschlüssel (Column Encryption Key, CEK).Decrypts an encrypted column encryption key (CEK). Diese Entschlüsselung wird mithilfe eines RSA-Verschlüsselungsalgorithmus durchgeführt, der den durch den Hauptschlüsselpfad angegebenen asymmetrischen Schlüssel verwendet.This decryption is accomplished with an RSA encryption algorithm that uses the asymmetric key specified by the master key path.
(Setzt SQLServerColumnEncryptionKeyStoreProvider außer Kraft.(Overrides SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Verschlüsselt einen Spaltenverschlüsselungsschlüssel, indem der angegebene Spaltenhauptschlüssel an den angegebenen Algorithmus übergeben wird.Encrypts a column encryption key, by giving the specified column master key to the specified algorithm.
(Setzt SQLServerColumnEncryptionKeyStoreProvider außer Kraft.(Overrides SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).)encryptColumnEncryptionKey(String, String, Byte[]).)
public void setName (String name) Legt den Namen dieses Keystoreanbieters fest.Sets the name of this key store provider.
public String getName () Ruft den Namen dieses Keystoreanbieters ab.Gets the name of this key store provider.

SQLServerKeyVaultAuthenticationCallback-SchnittstelleSQLServerKeyVaultAuthenticationCallback interface

Diese Schnittstelle enthält eine Methode für die Authentifizierung bei Azure Key Vault, die vom Benutzer implementiert werden muss.This interface contains one method for Azure Key Vault authentication, which is to be implemented by user.

Methoden:Methods:

NameName BESCHREIBUNGDescription
public String getAccessToken(String authority, String resource, String scope); Diese Methode muss außer Kraft gesetzt werden.The method must be overridden. Die Methode wird zum Abrufen eines Zugriffstokens für Azure Key Vault verwendet.The method is used to get an access token to Azure Key Vault.

SQLServerColumnEncryptionKeyStoreProvider-KlasseSQLServerColumnEncryptionKeyStoreProvider class

Erweitern Sie diese Klasse, um einen benutzerdefinierten Schlüsselspeicheranbieter zu implementieren.Extend this class to implement a custom key store provider.

NameName BESCHREIBUNGDescription
SQLServerColumnEncryptionKeyStoreProviderSQLServerColumnEncryptionKeyStoreProvider Die Basisklasse für alle Schlüsselspeicheranbieter.Base class for all key store providers. Ein benutzerdefinierter Anbieter muss von dieser Klasse abgeleitet werden, seine Memberfunktionen überschreiben und dann mithilfe von SQLServerConnection registriert werden.A custom provider must derive from this class and override its member functions and then register it using SQLServerConnection. registerColumnEncryptionKeyStoreProviders().registerColumnEncryptionKeyStoreProviders().

Methoden:Methods:

NameName BESCHREIBUNGDescription
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) Basisklassenmethode, um den angegebenen verschlüsselten Wert eines CEK zu entschlüsseln.Base class method for decrypting the specified encrypted value of a column encryption key. Es wird erwartet, dass der verschlüsselte Wert verschlüsselt wird, indem der Spaltenhauptschlüssel mit dem angegebenen Schlüsselpfad sowie der angegebene Algorithmus verwendet wird.The encrypted value is expected to be encrypted using the column master key with the specified key path and the specified algorithm.
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Basisklassenmethode, um einen CEK mithilfe eines CMK mit dem angegebenen Schlüsselpfad und mithilfe des angegebenen Algorithmus zu verschlüsseln.Base class method for encrypting a column encryption key using the column master key with the specified key path and using the specified algorithm.
public abstract void setName(String name) Legt den Namen dieses Keystoreanbieters fest.Sets the name of this key store provider.
public abstract String getName() Ruft den Namen dieses Keystoreanbieters ab.Gets the name of this key store provider.

Neue oder überladene Methoden in der SQLServerPreparedStatement-KlasseNew or overloaded methods in SQLServerPreparedStatement class

NameName BESCHREIBUNGDescription
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)
Diese Methoden werden mit einem Argument für Genauigkeit oder Anzahl von Dezimalstellen oder beidem überladen, um Always Encrypted für bestimmte Datentypen zu unterstützen, die Informationen zu Genauigkeit und Skalierung erfordern.These methods are overloaded with a precision or a scale argument or both to support Always Encrypted for specific data types that require precision and scale information.
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)
Diese Methoden fügen Always Encrypted-Unterstützung zu den Datentypen „money“, „smallmoney“, „uniqueidentifier“, „datetime“ und „smalldatetime“ hinzu.These methods add support for Always Encrypted for the data types money, smallmoney, uniqueidentifier, datetime and smalldatetime.

Über die vorhandene Methode setTimestamp() werden Parameterwerte an die verschlüsselte datetime2-Spalte gesendet.The existing setTimestamp() method is used for sending parameter values to the encrypted datetime2 column. Für verschlüsselte datetime- und smalldatetime-Spalten verwenden Sie jeweils die neuen Methoden setDateTime() und setSmallDateTime().For encrypted datetime and smalldatetime columns, use the new methods setDateTime() and setSmallDateTime() respectively.
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)
Legt den benannten Parameter auf den angegebenen Java-Wert fest.Sets the named parameter to the given java value.

Wenn der boolesche Wert forceEncrypt auf „true“ festgelegt ist, wird der Abfrageparameter nur festgelegt, wenn die angegebene Spalte verschlüsselt und Always Encrypted in der Verbindung oder Anweisung aktiviert ist.If the boolean forceEncrypt is set to true, the query parameter will only be set if the designated column is encrypted and Always Encrypted is enabled on the connection or on the statement.

Wenn der boolesche forceEncryption-Typ auf „false“ festgelegt ist, erzwingt der Treiber die Verschlüsselung in Parametern nicht.If the boolean forceEncrypt is set to false, the driver won't force encryption on parameters.

Neue oder überladene Methoden in der SQLServerCallableStatement-KlasseNew or overloaded methods in SQLServerCallableStatement class

NameName BESCHREIBUNGDescription
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)
Diese Methoden werden mit einem Argument für Genauigkeit oder Anzahl von Dezimalstellen oder beidem überladen, um Always Encrypted für bestimmte Datentypen zu unterstützen, die Informationen zu Genauigkeit und Skalierung erfordern.These methods are overloaded with a precision or a scale argument or both to support Always Encrypted for specific data types that require precision and scale information.
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)
Diese Methoden fügen Always Encrypted-Unterstützung zu den Datentypen „money“, „smallmoney“, „uniqueidentifier“, „datetime“ und „smalldatetime“ hinzu.These methods add support for Always Encrypted for the data types money, smallmoney, uniqueidentifier, datetime and smalldatetime.

Über die vorhandene Methode setTimestamp() werden Parameterwerte an die verschlüsselte datetime2-Spalte gesendet.The existing setTimestamp() method is used for sending parameter values to the encrypted datetime2 column. Für verschlüsselte datetime- und smalldatetime-Spalten verwenden Sie jeweils die neuen Methoden setDateTime() und setSmallDateTime().For encrypted datetime and smalldatetime columns, use the new methods setDateTime() and setSmallDateTime() respectively.
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)
Legt den benannten Parameter auf den angegebenen Java-Wert fest.Sets the named parameter to the given java value.

Wenn der boolesche Wert „forceEncrypt“ auf „true“ festgelegt ist, wird der Abfrageparameter nur festgelegt, wenn die angegebene Spalte verschlüsselt und Always Encrypted für die Verbindung oder Anweisung aktiviert ist.If the boolean forceEncrypt is set to true, the query parameter will only be set if the designated column is encrypted and Always Encrypted is enabled on the connection or on the statement.

Wenn der boolesche forceEncryption-Typ auf „false“ festgelegt ist, erzwingt der Treiber die Verschlüsselung in Parametern nicht.If the boolean forceEncrypt is set to false, the driver won't force encryption on parameters.

Neue oder überladene Methoden in der SQLServerResultSet-KlasseNew or overloaded methods in SQLServerResultSet class

NameName BeschreibungDescription
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)
Diese Methoden fügen Always Encrypted-Unterstützung zu den Datentypen „money“, „smallmoney“, „uniqueidentifier“, „datetime“ und „smalldatetime“ hinzu.These methods add support for Always Encrypted for the data types money, smallmoney, uniqueidentifier, datetime, and smalldatetime.

Die vorhandene Methode updateTimestamp() wird zum Aktualisieren von verschlüsselten datetime2-Spalten verwendet.The existing updateTimestamp() method is used for updating encrypted datetime2 columns. Für verschlüsselte datetime- und smalldatetime-Spalten verwenden Sie jeweils die neuen Methoden updateDateTime() und updateSmallDateTime().For encrypted datetime and smalldatetime columns, use the new methods updateDateTime() and updateSmallDateTime() respectively.
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)
Aktualisiert die benannte Spalte auf den angegebenen Java-Wert.Updates the named column to the given java value.

Wenn der boolesche Wert forceEncrypt auf „true“ festgelegt ist, wird die Spalte nur festgelegt, wenn sie verschlüsselt und Always Encrypted in der Verbindung oder Anweisung aktiviert ist.If the boolean forceEncrypt is set to true, the column will only be set if it's encrypted and Always Encrypted is enabled on the connection or on the statement.

Wenn der boolesche Wert forceEncrypt auf „false“ festgelegt ist, erzwingt der Treiber die Verschlüsselung in Parametern nicht.If the boolean forceEncrypt is set to false, the driver won't force encryption on parameters.

Neue Typen in der microsoft.sql.Types-KlasseNew types in microsoft.sql.Types class

NameName BESCHREIBUNGDescription
DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUIDDATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID Verwenden Sie diese Typen als SQL-Zieltypen, wenn Sie Parameterwerte mithilfe von setObject()/updateObject()-API-Methoden an verschlüsselte datetime-, smalldatetime-, money-, smallmoney- oder uniqueidentifier-Spalten senden.Use these types as the target SQL types when sending parameter values to encrypted datetime, smalldatetime, money, smallmoney, uniqueidentifier columns using setObject()/updateObject() API methods.

SQLServerStatementColumnEncryptionSetting-EnumerationSQLServerStatementColumnEncryptionSetting Enum

Gibt an, wie Daten beim Lesen und Schreiben von verschlüsselten Spalten gesendet und empfangen werden.Specifies how data will be sent and received when reading and writing encrypted columns. Je nach spezifischer Abfrage können Leistungseinbußen möglicherweise durch Umgehen der Verarbeitung des Always Encrypted-Treibers verringert werden, wenn nicht verschlüsselte Spalten verwendet werden.Depending on your specific query, performance impact may be reduced by bypassing the Always Encrypted driver's processing when non-encrypted columns are being used. Diese Einstellungen können nicht dazu verwendet werden, die Verschlüsselung zu umgehen und Zugriff auf Klartextdaten zu erhalten.These settings can't be used to bypass encryption and gain access to plaintext data.

Syntax:Syntax:

Public enum  SQLServerStatementColumnEncryptionSetting

Mitglieder:Members:

NameName BESCHREIBUNGDescription
UseConnectionSettingUseConnectionSetting Gibt an, dass der Befehl standardmäßig die Einstellung für die grundsätzliche Verschlüsselung in der Verbindungszeichenfolge verwenden sollte.Specifies that the command should default to the Always Encrypted setting in the connection string.
AktiviertEnabled Aktiviert die grundsätzliche Verschlüsselung für die Abfrage.Enables Always Encrypted for the query.
ResultSetOnlyResultSetOnly Gibt an, dass nur die Ergebnisse des Befehls von der Routine für die grundsätzliche Verschlüsselung im Treiber verarbeitet werden sollen.Specifies that only the results of the command should be processed by the Always Encrypted routine in the driver. Verwenden Sie diesen Wert, wenn der Befehl keine Parameter aufweist, die eine Verschlüsselung erfordern.Use this value when the command has no parameters that require encryption.
DisabledDisabled Deaktiviert die grundsätzliche Verschlüsselung für die Abfrage.Disables Always Encrypted for the query.

Die Einstellung für Always Encrypted auf Anweisungsebene wird zur SQLServerConnection- und zur SQLServerConnectionPoolProxy-Klasse hinzugefügt.The statement level setting for AE is added to the SQLServerConnection class and to the SQLServerConnectionPoolProxy class. Die folgenden Methoden in diesen Klassen werden mit der neuen Einstellung überladen.The following methods in these classes are overloaded with the new setting.

NameName BESCHREIBUNGDescription
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Erstellt ein Statement-Objekt, das ResultSet-Objekte mit den angegebenen Werten für Typ, Parallelität, Haltbarkeit und Einstellung für die Spaltenverschlüsselung generiert.Creates a Statement object that will generate ResultSet objects with the given type, concurrency, holdability, and column encryption setting.
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetiing) Erstellt ein CallableStatement-Objekt mit der angegebenen Einstellung für die Spaltenverschlüsselung, das ResultSet-Objekte mit den angegebenen Werten für Typ, Parallelität und Haltbarkeit generiert.Creates a CallableStatement object with the given column encryption setting that will generate ResultSet objects with the given type, concurrency, and holdability.
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Erstellt ein PreparedStatement-Objekt mit der angegebenen Einstellung für die Spaltenverschlüsselung, das automatisch generierte Schlüssel abrufen kann.Creates a PreparedStatement object with the given column encryption setting that has the capability to retrieve autogenerated keys.
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Erstellt ein PreparedStatement-Objekt mit der angegebenen Einstellung für die Spaltenverschlüsselung, das ResultSet-Objekte mit den angegebenen Spaltennamen generiert.Creates a PreparedStatement object with the given column encryption setting that will generate ResultSet objects with the given column names.
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting Erstellt ein PreparedStatement-Objekt mit der angegebenen Einstellung für die Spaltenverschlüsselung, das ResultSet-Objekte mit den angegebenen Spaltenindizes generiert.Creates a PreparedStatement object with the given column encryption setting that will generate ResultSet objects with the given column indexes.
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Erstellt ein PreparedStatement-Objekt mit der angegebenen Einstellung für die Spaltenverschlüsselung, das ResultSet-Objekte mit den angegebenen Werten für Typ, Parallelität und Haltbarkeit generiert.Creates a PreparedStatement object with the given column encryption setting that will generate ResultSet objects with the given type, concurrency, and holdability.

Hinweis

Wenn Always Encrypted für eine Abfrage deaktiviert ist und die Abfrage Parameter enthält, die verschlüsselt werden müssen (also Parameter, die verschlüsselten Spalten entsprechen), tritt bei der Abfrage ein Fehler auf.If Always Encrypted is disabled for a query and the query has parameters that need to be encrypted (parameters that correspond to encrypted columns), the query will fail.

Wenn Always Encrypted für eine Abfrage deaktiviert ist und die Abfrage Ergebnisse aus verschlüsselten Spalten zurückgibt, gibt die Abfrage verschlüsselte Werte zurück.If Always Encrypted is disabled for a query and the query returns results from encrypted columns, the query will return encrypted values. Die verschlüsselten Werte weisen den Datentyp „varbinary“ auf.The encrypted values will have the varbinary datatype.

Weitere InformationenSee also

Verwenden von Always Encrypted mit dem JDBC-TreiberUsing Always Encrypted with the JDBC driver