Referência da API do Always Encrypted para o JDBC Driver

Baixar Driver JDBC

O Always Encrypted permite que os clientes criptografem dados confidenciais dentro de aplicativos cliente e nunca revelem as chaves de criptografia ao servidor. Um driver instalado no computador cliente e habilitado para usar o Always Encrypted obterá essa funcionalidade criptografando e descriptografando dados confidenciais de modo automático no aplicativo cliente.

O driver criptografa os dados em colunas confidenciais antes de enviar os dados ao SQL Server. Além disso, ele reescreve as consultas de modo automático para preservar a semântica do aplicativo. Da mesma forma, o driver descriptografa de modo transparente os dados armazenados em colunas de banco de dados criptografadas dos resultados da consulta. Para obter mais informações, confira Always Encrypted (Mecanismo de Banco de Dados) e Como usar Always Encrypted com o JDBC Driver.

Observação

O Always Encrypted é compatível somente com o Microsoft JDBC Driver 6.0 para SQL Server ou posterior, juntamente com o Banco de Dados SQL do Azure e o SQL Server 2016 ou posterior.

Referências da API do Always Encrypted

Existem diversas novas adições e modificações para a API do driver JDBC para uso em aplicativos cliente que usam Sempre Criptografado.

Classe SQLServerConnection

Nome Descrição
Nova palavra-chave de cadeia de conexão:

columnEncryptionSetting
columnEncryptionSetting=Enabled habilita a funcionalidade Always Encrypted na conexão e columnEncryptionSetting=Disabled a desabilita. Os valores aceitos são Enabled/Disabled. O padrão é Disabled.
Nova palavra-chave da cadeia de conexão: (MS JDBC 7.4 em diante)

keyVaultProviderClientId

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

Registra o SQLServerColumnEncryptionAzureKeyVaultProvider e usa os valores ClientID e ClientKey para recuperar a chave mestra de coluna do Azure Key Vault
Novos métodos:

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

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

public static void removeColumnEncryptionTrustedMasterKeyPaths(String server)
Permite que você defina/atualize/remova uma lista de caminhos de chave confiáveis para um servidor de banco de dados. Se, durante o processamento de uma consulta de aplicativo, o driver receber um caminho de chave que não esteja na lista, a consulta falhará. Esta propriedade fornece uma proteção adicional contra ataques de segurança. Eles implicam em um servidor comprometido que envia caminhos de chave falsos. Isso pode gerar um vazamento de credenciais de repositórios de chaves.
Novo método:

public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths()
Retorna uma lista de caminhos confiáveis de chave para um servidor de banco de dados.
Novo método:

public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Permite que você registre os provedores de repositório de chaves personalizado. É um dicionário que mapeia nomes de provedor de repositório de chaves para implementações do provedor de repositório de chaves.

Para usar o repositório de chaves da JVM, você precisa criar uma instância de um objeto SQLServerColumnEncryptionJVMKeyStoreProvider com credenciais do repositório de chaves da JVM e registrá-lo com o driver. O nome desse provedor deve ser "MSSQL_JVM_KEYSTORE".

Para usar o repositório do Azure Key Vault, você precisa criar uma instância de um objeto SQLServerColumnEncryptionAzureKeyStoreProvider e registrá-lo com o driver. O nome deste provedor deve ser 'AZURE_KEY_VAULT'.
Novo método:

public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Permite cancelar o registro de todos os provedores personalizados do repositório de chaves. Desse modo, o método limpa o dicionário que mapeia os nomes do provedor do repositório de chaves para executar implementações do provedor do repositório de chaves.
public final boolean getSendTimeAsDatetime() Retorna a configuração da propriedade de conexão sendTimeAsDatetime.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Modifica a configuração da propriedade de conexão sendTimeAsDatetime.

SQLServerConnectionPoolProxy class

Nome Descrição
public final boolean getSendTimeAsDatetime() Retorna a configuração da propriedade de conexão sendTimeAsDatetime.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Modifica a configuração da propriedade de conexão sendTimeAsDatetime.

Classe SQLServerDataSource

Nome Descrição
public void setColumnEncryptionSetting(String columnEncryptionSetting) Habilita/desabilita a funcionalidade Sempre Criptografado para o objeto de fonte de dados.

O padrão é Disabled.
public String getColumnEncryptionSetting() Recupera a configuração da funcionalidade Sempre Criptografado para o objeto de fonte de dados.
public void setKeyStoreAuthentication(String keyStoreAuthentication) Define o nome que identifica um repositório de chaves. O único valor compatível é JavaKeyStorePassword para identificar o repositório de chaves Java.

O padrão é nulo.
public String getKeyStoreAuthentication() Obtém o valor da configuração keyStoreAuthentication para o objeto de fonte de dados.
public void setKeyStoreSecret(String keyStoreSecret) Define a senha para o repositório de chaves Java. A senha do repositório de chaves e a chave devem ser iguais. O keyStoreAuthentication deverá ser definido com JavaKeyStorePassword.
public void setKeyStoreLocation(String keyStoreLocation) Define a localização, incluindo o nome do arquivo para o repositório de chaves Java. O keyStoreAuthentication deverá ser definido com JavaKeyStorePassword.
public String getKeyStoreLocation() Recupera o keyStoreLocation para o Repositório de Chaves Java.

Classe SQLServerColumnEncryptionJavaKeyStoreProvider

A implementação do provedor de repositórios de chaves para o Repositório de Chaves do Java. Essa classe permite o uso de certificados armazenados no repositório de chaves do Java como chaves mestras de coluna.

Construtores:

Nome Descrição
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) Provedor do repositório de chaves para o Repositório de Chaves Java.

Métodos:

Nome Descrição
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Descriptografa o valor criptografado especificado de uma chave de criptografia de coluna. O valor criptografado deve ser criptografado usando o algoritmo especificado e o certificado com o caminho da chave especificado.

O caminho da chave deverá estar em um dos seguintes formatos:

Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>

(substitui SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) Criptografa uma chave de criptografia da coluna usando o algoritmo especificado e o certificado com o caminho da chave especificado.

O caminho da chave deverá estar em um dos seguintes formatos:

Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>

(substitui SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).)
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) Verifica determinada assinatura da chave de criptografia da coluna usando um certificado.

O caminho da chave deverá estar em um dos seguintes formatos:

Thumbprint:<certificate_thumbprint>

Alias:<certificate_alias>

(substitui SQLServerColumnEncryptionKeyStoreProvider. verifyColumnEncryptionKey(String, boolean, Byte[]).)
public void setName (String name) Define o nome deste provedor de repositório de chaves.
public String getName () Obtém o nome deste provedor de repositório de chaves.

Classe SQLServerColumnEncryptionAzureKeyVaultProvider

A implementação do provedor de repositórios de chaves para o Azure Key Vault. Essa classe habilita o uso de chaves armazenadas no Azure Key Vault como chaves mestras de coluna.

Construtores:

Nome Descrição
public SQLServerColumnEncryptionAzureKeyVaultProvider () Cria um SQLServerColumnEncryptionAzureKeyVaultProvider para obter uma autenticação no Azure Key Vault.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) Cria um SQLServerColumnEncryptionAzureKeyVaultProvider para obter uma autenticação no Azure Key Vault usando o identificador do cliente que está solicitando o token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) Cria um SQLServerColumnEncryptionAzureKeyVaultProvider para obter uma autenticação no Azure Key Vault usando o identificador e a chave do cliente que está solicitando o token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) Cria um SQLServerColumnEncryptionAzureKeyVaultProvider para obter uma autenticação no Azure Key Vault usando o TokenCredential fornecido.

Métodos:

Nome Descrição
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Descriptografa uma CEK (chave de criptografia de coluna) criptografada. Essa descriptografia é realizada com um algoritmo de criptografia RSA que usa a chave assimétrica especificada pelo caminho da chave mestra.
(substitui SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Criptografa uma chave de criptografia de coluna, fornecendo a chave mestra de coluna especificada para o algoritmo especificado.
(substitui SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).)
public void setName (String name) Define o nome deste provedor de repositório de chaves.
public String getName () Obtém o nome deste provedor de repositório de chaves.

Interface do SQLServerKeyVaultAuthenticationCallback

Essa interface contém um método para autenticação do Azure Key Vault, que deve ser implementado pelo usuário.

Métodos:

Nome Descrição
public String getAccessToken(String authority, String resource, String scope); O método deverá ser substituído. O método é usado para obter um token de acesso para o Azure Key Vault.

Classe SQLServerColumnEncryptionKeyStoreProvider

Estenda a classe para implementar um provedor personalizado de repositório de chave.

Nome Descrição
SQLServerColumnEncryptionKeyStoreProvider Classe base para todos os provedores de repositório de chaves. Um provedor personalizado precisa derivar dessa classe e substituir suas funções de membro e, em seguida, registrá-lo usando SQLServerConnection. registerColumnEncryptionKeyStoreProviders().

Métodos:

Nome Descrição
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) Método de classe base para descriptografar o valor especificado de uma coluna da chave de criptografia. O valor criptografado deve ser criptografado usando a chave mestra de coluna com o caminho de chave e o algoritmo especificados.
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Método da classe base para criptografar a criptografia de uma coluna de chave usando a chave mestra de coluna com o caminho da chave especificado e usar o algoritmo especificado.
public abstract void setName(String name) Define o nome deste provedor de repositório de chaves.
public abstract String getName() Obtém o nome deste provedor de repositório de chaves.

Métodos novos ou sobrecarregados na classe SQLServerPreparedStatement

Nome Descrição
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)
Esses métodos são sobrecarregados com uma precisão ou um argumento de escala ou ambos para dar suporte a Always Encrypted para tipos de dados específicos que exigem informações de precisão e escala.
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)
Esses métodos adicionam suporte para o Always Encrypted e tipos de dados que incluem: money, smallmoney, uniqueidentifier, datetime e smalldatetime.

O método setTimestamp() existente é usado para enviar valores de parâmetros para uma coluna datetime2 criptografada. Use os novos métodos setDateTime() e setSmallDateTime(), respectivamente, em colunas datetime e smalldatetime criptografadas.
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)
Define um parâmetro nomeado para o valor Java fornecido.

Caso o forceEncrypt booliano seja definido como true, o parâmetro de consulta será definido somente se a coluna designada for criptografada. Além disso, o Always Encrypted será habilitado na conexão ou na instrução.

Se o forceEncrypt booliano for definido como false, o driver não forçará a criptografia em parâmetros.

Métodos novos ou sobrecarregados da classe SQLServerCallableStatement

Nome Descrição
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)
Esses métodos são sobrecarregados com uma precisão ou um argumento de escala ou ambos para dar suporte a Always Encrypted para tipos de dados específicos que exigem informações de precisão e escala.
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)
Esses métodos adicionam suporte para o Always Encrypted e tipos de dados que incluem: money, smallmoney, uniqueidentifier, datetime e smalldatetime.

O método setTimestamp() existente é usado para enviar valores de parâmetros para uma coluna datetime2 criptografada. Use os novos métodos setDateTime() e setSmallDateTime(), respectivamente, em colunas datetime e smalldatetime criptografadas.
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)
Define um parâmetro nomeado para o valor Java fornecido.

Caso o forceEncrypt booliano seja definido como true, o parâmetro de consulta será definido somente se a coluna designada for criptografada. Além disso, o Always Encrypted será habilitado na conexão ou na instrução.

Se o forceEncrypt booliano for definido como false, o driver não forçará a criptografia em parâmetros.

Métodos novos ou sobrecarregados da classe SQLServerResultSet

Nome Descrição
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)
Esses métodos adicionam suporte para o Always Encrypted e tipos de dados que incluem: money, smallmoney, uniqueidentifier, datetime e smalldatetime.

O método updateTimestamp() existente é usado para atualizar colunas datetime2 criptografadas. Use os novos métodos updateDateTime() e updateSmallDateTime(), respectivamente, em colunas datetime e smalldatetime criptografadas.
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)
Atualiza a coluna nomeada para o valor Java fornecido.

Caso o forceEncrypt booliano seja definido como true, a coluna será definida somente se ela for criptografada. Além disso, o Always Encrypted será habilitado na conexão ou na instrução.

Caso o forceEncrypt booliano seja definido como false, o driver não forçará a criptografia nos parâmetros.

Novos tipos na classe microsoft.sql.types

Nome Descrição
DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID Use esses tipos como os tipos SQL de destino ao enviar valores de parâmetro para as colunas DateTime criptografado, smalldatetime, Money, setObject()/updateObject() smallmoney e uniqueidentifier usando métodos de API.

SQLServerStatementColumnEncryptionSetting Enum

Especifica como os dados serão enviados e recebidos durante a leitura e gravação de colunas criptografadas. Dependendo da consulta específica, o impacto no desempenho pode ser reduzido ignorando o processamento do driver Always Encrypted quando colunas não criptografadas são usadas. Essas configurações não podem ser usadas para ignorar a criptografia e obter acesso a dados de texto sem formatação.

Sintaxe:

Public enum  SQLServerStatementColumnEncryptionSetting

Membros:

Nome Descrição
UseConnectionSetting Especifica que o comando deve usar como padrão a configuração do Always Encrypted na cadeia de conexão.
habilitado Habilita o Always Encrypted na consulta.
ResultSetOnly Especifica que somente os resultados do comando devem ser processados pela rotina do Always Encrypted no driver. Use esse valor quando o comando não tiver nenhum parâmetro que exige criptografia.
Desabilitado Desabilita o Always Encrypted na consulta.

A configuração de nível de instrução para criptografia AE é adicionada à classe SQLServerConnection e à classe SQLServerConnectionPoolProxy. Os métodos a seguir nessas classes são sobrecarregados com a nova configuração.

Nome Descrição
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Cria um objeto de instrução que gerará objetos ResultSet com as configurações de tipo, simultaneidade, suspensão e criptografia de coluna fornecidas.
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetiing) Cria um objeto CallableStatement com a configuração de criptografia de coluna fornecida que gerará objetos ResultSet com o tipo, a simultaneidade e a suspensão fornecidos.
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Cria um objeto PreparedStatement usando a configuração fornecida de criptografia de coluna que tem a capacidade de recuperar chaves geradas de modo automático.
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Cria um objeto PreparedStatement com a configuração de criptografia de coluna fornecida que gerará os objetos ResultSet com os nomes de coluna fornecidos.
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting Cria um objeto PreparedStatement com a configuração de criptografia de coluna fornecida que gerará os objetos ResultSet com os índices de coluna fornecidos.
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Cria um objeto PreparedStatement com a configuração de criptografia de coluna fornecida que gerará objetos ResultSet com o tipo, a simultaneidade e a suspensão fornecidos.

Observação

Se Always Encrypted estiver desabilitado para uma consulta e a consulta tiver parâmetros que precisam ser criptografados (parâmetros que correspondem a colunas criptografadas), a consulta falhará.

Se Always Encrypted estiver desabilitado para uma consulta e a consulta retornar resultados de colunas criptografadas, a consulta retornará valores criptografados. Os valores criptografados terão o tipo de dados varbinary.

Confira também

Como usar Always Encrypted com o JDBC Driver