Class SQLServerConnection

  • All Implemented Interfaces:
    ISQLServerConnection, java.io.Serializable, java.lang.AutoCloseable, java.sql.Connection, java.sql.Wrapper
    Direct Known Subclasses:
    SQLServerConnection43

    public class SQLServerConnection
    extends java.lang.Object
    implements ISQLServerConnection, java.io.Serializable
    Provides an implementation java.sql.connection interface that assists creating a JDBC connection to SQL Server. SQLServerConnections support JDBC connection pooling and may be either physical JDBC connections or logical JDBC connections. SQLServerConnection manages transaction control for all statements that were created from it. SQLServerConnection may participate in XA distributed transactions managed via an XAResource adapter. SQLServerConnection instantiates a new TDSChannel object for use by itself and all statement objects that are created under this connection. SQLServerConnection manages a pool of prepared statement handles. Prepared statements are prepared once and typically executed many times with different data values for their parameters. Prepared statements are also maintained across logical (pooled) connection closes. SQLServerConnection is not thread safe, however multiple statements created from a single connection can be processing simultaneously in concurrent threads. This class's public functions need to be kept identical to the SQLServerConnectionPoolProxy's. The API javadoc for JDBC API methods that this class implements are not repeated here. Please see Sun's JDBC API interfaces javadoc for those details. NOTE: All the public functions in this class also need to be defined in SQLServerConnectionPoolProxy Declare all new custom (non-static) Public APIs in ISQLServerConnection interface such that they can also be implemented by SQLServerConnectionPoolProxy
    See Also:
    Serialized Form
    • Method Detail

      • getUseBulkCopyForBatchInsert

        public boolean getUseBulkCopyForBatchInsert()
        Returns the useBulkCopyForBatchInsert value.
        Returns:
        flag for using Bulk Copy API for batch insert operations.
      • setUseBulkCopyForBatchInsert

        public void setUseBulkCopyForBatchInsert​(boolean useBulkCopyForBatchInsert)
        Specifies the flag for using Bulk Copy API for batch insert operations.
        Parameters:
        useBulkCopyForBatchInsert - boolean value for useBulkCopyForBatchInsert.
      • registerColumnEncryptionKeyStoreProviders

        public static void registerColumnEncryptionKeyStoreProviders​(java.util.Map<java.lang.String,​SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
                                                              throws SQLServerException
        Registers key store providers in the globalCustomColumnEncryptionKeyStoreProviders.
        Parameters:
        clientKeyStoreProviders - a map containing the store providers information.
        Throws:
        SQLServerException - when an error occurs
      • setColumnEncryptionTrustedMasterKeyPaths

        public static void setColumnEncryptionTrustedMasterKeyPaths​(java.util.Map<java.lang.String,​java.util.List<java.lang.String>> trustedKeyPaths)
        Sets Trusted Master Key Paths in the columnEncryptionTrustedMasterKeyPaths.
        Parameters:
        trustedKeyPaths - all master key paths that are trusted
      • updateColumnEncryptionTrustedMasterKeyPaths

        public static void updateColumnEncryptionTrustedMasterKeyPaths​(java.lang.String server,
                                                                       java.util.List<java.lang.String> trustedKeyPaths)
        Updates the columnEncryptionTrustedMasterKeyPaths with the new Server and trustedKeyPaths.
        Parameters:
        server - String server name
        trustedKeyPaths - all master key paths that are trusted
      • removeColumnEncryptionTrustedMasterKeyPaths

        public static void removeColumnEncryptionTrustedMasterKeyPaths​(java.lang.String server)
        Removes the trusted Master key Path from the columnEncryptionTrustedMasterKeyPaths.
        Parameters:
        server - String server name
      • getColumnEncryptionTrustedMasterKeyPaths

        public static java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getColumnEncryptionTrustedMasterKeyPaths()
        Returns the Trusted Master Key Paths.
        Returns:
        columnEncryptionTrustedMasterKeyPaths.
      • getClientConnectionId

        public java.util.UUID getClientConnectionId()
                                             throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Returns the connection ID of the most recent connection attempt, regardless of whether the attempt succeeded or failed.
        Specified by:
        getClientConnectionId in interface ISQLServerConnection
        Returns:
        16-byte GUID representing the connection ID of the most recent connection attempt. Or, NULL if there is a failure after the connection request is initiated and the pre-login handshake.
        Throws:
        SQLServerException - If any errors occur.
      • toString

        public java.lang.String toString()
        Provides a helper function to return an ID string suitable for tracing.
        Overrides:
        toString in class java.lang.Object
      • needsReconnect

        protected boolean needsReconnect()
        Returns if Federated Authentication is in use or is about to expire soon
        Returns:
        true/false
      • createStatement

        public java.sql.Statement createStatement()
                                           throws SQLServerException
        Specified by:
        createStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareCall

        public java.sql.CallableStatement prepareCall​(java.lang.String sql)
                                               throws SQLServerException
        Specified by:
        prepareCall in interface java.sql.Connection
        Throws:
        SQLServerException
      • nativeSQL

        public java.lang.String nativeSQL​(java.lang.String sql)
                                   throws SQLServerException
        Specified by:
        nativeSQL in interface java.sql.Connection
        Throws:
        SQLServerException
      • setAutoCommit

        public void setAutoCommit​(boolean newAutoCommitMode)
                           throws SQLServerException
        Specified by:
        setAutoCommit in interface java.sql.Connection
        Throws:
        SQLServerException
      • abort

        public void abort​(java.util.concurrent.Executor executor)
                   throws java.sql.SQLException
        Specified by:
        abort in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • close

        public void close()
                   throws SQLServerException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.sql.Connection
        Throws:
        SQLServerException
      • setCatalog

        public void setCatalog​(java.lang.String catalog)
                        throws SQLServerException
        Specified by:
        setCatalog in interface java.sql.Connection
        Throws:
        SQLServerException
      • setTransactionIsolation

        public void setTransactionIsolation​(int level)
                                     throws SQLServerException
        Specified by:
        setTransactionIsolation in interface java.sql.Connection
        Throws:
        SQLServerException
      • getTransactionIsolation

        public int getTransactionIsolation()
                                    throws SQLServerException
        Specified by:
        getTransactionIsolation in interface java.sql.Connection
        Throws:
        SQLServerException
      • createStatement

        public java.sql.Statement createStatement​(int resultSetType,
                                                  int resultSetConcurrency)
                                           throws SQLServerException
        Specified by:
        createStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int resultSetType,
                                                           int resultSetConcurrency)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareCall

        public java.sql.CallableStatement prepareCall​(java.lang.String sql,
                                                      int resultSetType,
                                                      int resultSetConcurrency)
                                               throws SQLServerException
        Specified by:
        prepareCall in interface java.sql.Connection
        Throws:
        SQLServerException
      • setTypeMap

        public void setTypeMap​(java.util.Map<java.lang.String,​java.lang.Class<?>> map)
                        throws java.sql.SQLException
        Specified by:
        setTypeMap in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • getTypeMap

        public java.util.Map<java.lang.String,​java.lang.Class<?>> getTypeMap()
                                                                            throws SQLServerException
        Specified by:
        getTypeMap in interface java.sql.Connection
        Throws:
        SQLServerException
      • createStatement

        public java.sql.Statement createStatement​(int nType,
                                                  int nConcur,
                                                  int resultSetHoldability)
                                           throws SQLServerException
        Specified by:
        createStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • createStatement

        public java.sql.Statement createStatement​(int nType,
                                                  int nConcur,
                                                  int resultSetHoldability,
                                                  SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
                                           throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a Statement object that will generate ResultSet objects with the given type, concurrency, and holdability. This method is the same as the createStatement method above, but it allows the default result set type, concurrency, and holdability to be overridden.
        Specified by:
        createStatement in interface ISQLServerConnection
        Parameters:
        nType - one of the following ResultSet constants: ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
        nConcur - one of the following ResultSet constants: ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
        resultSetHoldability - one of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
        stmtColEncSetting - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new Statement object that will generate ResultSet objects with the given type, concurrency, and holdability
        Throws:
        SQLServerException - if a database access error occurs, this method is called on a closed connection or the given parameters are not ResultSet constants indicating type, concurrency, and holdability
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int nType,
                                                           int nConcur,
                                                           int resultSetHoldability)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int nType,
                                                           int nConcur,
                                                           int resultSetHoldability,
                                                           SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
                                                    throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a PreparedStatement object that will generate ResultSet objects with the given type, concurrency, and holdability.

        This method is the same as the prepareStatement method above, but it allows the default result set type, concurrency, and holdability to be overridden.

        Specified by:
        prepareStatement in interface ISQLServerConnection
        Parameters:
        sql - a String object that is the SQL statement to be sent to the database; may contain one or more '?' IN parameters
        nType - one of the following ResultSet constants: ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
        nConcur - one of the following ResultSet constants: ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
        resultSetHoldability - one of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
        stmtColEncSetting - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new PreparedStatement object, containing the pre-compiled SQL statement, that will generate ResultSet objects with the given type, concurrency, and holdability
        Throws:
        SQLServerException - if a database access error occurs, this method is called on a closed connection or the given parameters are not ResultSet constants indicating type, concurrency, and holdability
      • prepareCall

        public java.sql.CallableStatement prepareCall​(java.lang.String sql,
                                                      int nType,
                                                      int nConcur,
                                                      int resultSetHoldability)
                                               throws SQLServerException
        Specified by:
        prepareCall in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareCall

        public java.sql.CallableStatement prepareCall​(java.lang.String sql,
                                                      int nType,
                                                      int nConcur,
                                                      int resultSetHoldability,
                                                      SQLServerStatementColumnEncryptionSetting stmtColEncSetiing)
                                               throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a CallableStatement object that will generate ResultSet objects with the given type and concurrency. This method is the same as the prepareCall method above, but it allows the default result set type, result set concurrency type and holdability to be overridden.
        Specified by:
        prepareCall in interface ISQLServerConnection
        Parameters:
        sql - a String object that is the SQL statement to be sent to the database; may contain on or more '?' parameters
        nType - one of the following ResultSet constants: ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
        nConcur - one of the following ResultSet constants: ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
        resultSetHoldability - one of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
        stmtColEncSetiing - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new CallableStatement object, containing the pre-compiled SQL statement, that will generate ResultSet objects with the given type, concurrency, and holdability
        Throws:
        SQLServerException - if a database access error occurs, this method is called on a closed connection or the given parameters are not ResultSet constants indicating type, concurrency, and holdability
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int flag)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int flag,
                                                           SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
                                                    throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a default PreparedStatement object that has the capability to retrieve auto-generated keys. The given constant tells the driver whether it should make auto-generated keys available for retrieval. This parameter is ignored if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.

        Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY. The holdability of the created result sets can be determined by calling Connection.getHoldability().

        Specified by:
        prepareStatement in interface ISQLServerConnection
        Parameters:
        sql - an SQL statement that may contain one or more '?' IN parameter placeholders
        flag - a flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS
        stmtColEncSetting - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new PreparedStatement object, containing the pre-compiled SQL statement, that will have the capability of returning auto-generated keys
        Throws:
        SQLServerException - if a database access error occurs, this method is called on a closed connection or the given parameter is not a Statement constant indicating whether auto-generated keys should be returned
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int[] columnIndexes)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           int[] columnIndexes,
                                                           SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
                                                    throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a default PreparedStatement object capable of returning the auto-generated keys designated by the given array. This array contains the indexes of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        An SQL statement with or without IN parameters can be pre-compiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.

        Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.

        Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY. The holdability of the created result sets can be determined by calling Connection.getHoldability().

        Specified by:
        prepareStatement in interface ISQLServerConnection
        Parameters:
        sql - an SQL statement that may contain one or more '?' IN parameter placeholders
        columnIndexes - an array of column indexes indicating the columns that should be returned from the inserted row or rows
        stmtColEncSetting - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new PreparedStatement object, containing the pre-compiled statement, that is capable of returning the auto-generated keys designated by the given array of column indexes
        Throws:
        SQLServerException - if a database access error occurs or this method is called on a closed connection
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           java.lang.String[] columnNames)
                                                    throws SQLServerException
        Specified by:
        prepareStatement in interface java.sql.Connection
        Throws:
        SQLServerException
      • prepareStatement

        public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                           java.lang.String[] columnNames,
                                                           SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
                                                    throws SQLServerException
        Description copied from interface: ISQLServerConnection
        Creates a default PreparedStatement object capable of returning the auto-generated keys designated by the given array. This array contains the names of the columns in the target table that contain the auto-generated keys that should be returned. The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        An SQL statement with or without IN parameters can be pre-compiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.

        Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.

        Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY. The holdability of the created result sets can be determined by calling Connection.getHoldability().

        Specified by:
        prepareStatement in interface ISQLServerConnection
        Parameters:
        sql - an SQL statement that may contain one or more '?' IN parameter placeholders
        columnNames - an array of column names indicating the columns that should be returned from the inserted row or rows
        stmtColEncSetting - Specifies how data will be sent and received when reading and writing encrypted columns.
        Returns:
        a new PreparedStatement object, containing the pre-compiled statement, that is capable of returning the auto-generated keys designated by the given array of column names
        Throws:
        SQLServerException - if a database access error occurs or this method is called on a closed connection
      • releaseSavepoint

        public void releaseSavepoint​(java.sql.Savepoint savepoint)
                              throws java.sql.SQLException
        Specified by:
        releaseSavepoint in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • setSavepoint

        public java.sql.Savepoint setSavepoint​(java.lang.String sName)
                                        throws SQLServerException
        Specified by:
        setSavepoint in interface java.sql.Connection
        Throws:
        SQLServerException
      • setHoldability

        public void setHoldability​(int holdability)
                            throws SQLServerException
        Specified by:
        setHoldability in interface java.sql.Connection
        Throws:
        SQLServerException
      • getNetworkTimeout

        public int getNetworkTimeout()
                              throws java.sql.SQLException
        Specified by:
        getNetworkTimeout in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • setNetworkTimeout

        public void setNetworkTimeout​(java.util.concurrent.Executor executor,
                                      int timeout)
                               throws java.sql.SQLException
        Specified by:
        setNetworkTimeout in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • getSchema

        public java.lang.String getSchema()
                                   throws java.sql.SQLException
        Specified by:
        getSchema in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • setSchema

        public void setSchema​(java.lang.String schema)
                       throws java.sql.SQLException
        Specified by:
        setSchema in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • setSendTimeAsDatetime

        public void setSendTimeAsDatetime​(boolean sendTimeAsDateTimeValue)
        Description copied from interface: ISQLServerConnection
        Sets the value of the sendTimeAsDatetime connection property. When true, java.sql.Time values will be sent to the server as SQL Serverdatetime values. When false, java.sql.Time values will be sent to the server as SQL Servertime values. sendTimeAsDatetime can also be modified programmatically with SQLServerDataSource.setSendTimeAsDatetime. The default value for this property may change in a future release.
        Specified by:
        setSendTimeAsDatetime in interface ISQLServerConnection
        Parameters:
        sendTimeAsDateTimeValue - enables/disables setting the sendTimeAsDatetime connection property. For more information about how the Microsoft JDBC Driver for SQL Server configures java.sql.Time values before sending them to the server, see Configuring How java.sql.Time Values are Sent to the Server.
      • setUseFmtOnly

        public void setUseFmtOnly​(boolean useFmtOnly)
        Description copied from interface: ISQLServerConnection
        Specifies the flag to use FMTONLY for parameter metadata queries.
        Specified by:
        setUseFmtOnly in interface ISQLServerConnection
        Parameters:
        useFmtOnly - boolean value for 'useFmtOnly'.
      • createArrayOf

        public java.sql.Array createArrayOf​(java.lang.String typeName,
                                            java.lang.Object[] elements)
                                     throws java.sql.SQLException
        Specified by:
        createArrayOf in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • createBlob

        public java.sql.Blob createBlob()
                                 throws java.sql.SQLException
        Specified by:
        createBlob in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • createClob

        public java.sql.Clob createClob()
                                 throws java.sql.SQLException
        Specified by:
        createClob in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • createNClob

        public java.sql.NClob createNClob()
                                   throws java.sql.SQLException
        Specified by:
        createNClob in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • createSQLXML

        public java.sql.SQLXML createSQLXML()
                                     throws java.sql.SQLException
        Specified by:
        createSQLXML in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • createStruct

        public java.sql.Struct createStruct​(java.lang.String typeName,
                                            java.lang.Object[] attributes)
                                     throws java.sql.SQLException
        Specified by:
        createStruct in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • getClientInfo

        public java.util.Properties getClientInfo()
                                           throws java.sql.SQLException
        Specified by:
        getClientInfo in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • getClientInfo

        public java.lang.String getClientInfo​(java.lang.String name)
                                       throws java.sql.SQLException
        Specified by:
        getClientInfo in interface java.sql.Connection
        Throws:
        java.sql.SQLException
      • setClientInfo

        public void setClientInfo​(java.util.Properties properties)
                           throws java.sql.SQLClientInfoException
        Specified by:
        setClientInfo in interface java.sql.Connection
        Throws:
        java.sql.SQLClientInfoException
      • setClientInfo

        public void setClientInfo​(java.lang.String name,
                                  java.lang.String value)
                           throws java.sql.SQLClientInfoException
        Specified by:
        setClientInfo in interface java.sql.Connection
        Throws:
        java.sql.SQLClientInfoException
      • isValid

        public boolean isValid​(int timeout)
                        throws java.sql.SQLException
        Determine whether the connection is still valid. The driver shall submit a query on the connection or use some other mechanism that positively verifies the connection is still valid when this method is called. The query submitted by the driver to validate the connection shall be executed in the context of the current transaction.
        Specified by:
        isValid in interface java.sql.Connection
        Parameters:
        timeout - The time in seconds to wait for the database operation used to validate the connection to complete. If the timeout period expires before the operation completes, this method returns false. A value of 0 indicates a timeout is not applied to the database operation. Note that if the value is 0, the call to isValid may block indefinitely if the connection is not valid...
        Returns:
        true if the connection has not been closed and is still valid.
        Throws:
        java.sql.SQLException - if the value supplied for the timeout is less than 0.
      • isWrapperFor

        public boolean isWrapperFor​(java.lang.Class<?> iface)
                             throws java.sql.SQLException
        Specified by:
        isWrapperFor in interface java.sql.Wrapper
        Throws:
        java.sql.SQLException
      • unwrap

        public <T> T unwrap​(java.lang.Class<T> iface)
                     throws java.sql.SQLException
        Specified by:
        unwrap in interface java.sql.Wrapper
        Throws:
        java.sql.SQLException
      • beginRequestInternal

        protected void beginRequestInternal()
                                     throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • endRequestInternal

        protected void endRequestInternal()
                                   throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • setColumnEncryptionKeyCacheTtl

        public static void setColumnEncryptionKeyCacheTtl​(int columnEncryptionKeyCacheTTL,
                                                          java.util.concurrent.TimeUnit unit)
                                                   throws SQLServerException
        Sets time-to-live for column encryption key entries in the column encryption key cache for the Always Encrypted feature. The default value is 2 hours. This variable holds the value in seconds.
        Parameters:
        columnEncryptionKeyCacheTTL - The timeunit in seconds
        unit - The Timeunit.
        Throws:
        SQLServerException - when an error occurs
      • getEnablePrepareOnFirstPreparedStatementCall

        public boolean getEnablePrepareOnFirstPreparedStatementCall()
        Description copied from interface: ISQLServerConnection
        Returns the behavior for a specific connection instance. If false the first execution will call sp_executesql and not prepare a statement, once the second execution happens it will call sp_prepexec and actually setup a prepared statement handle. Following executions will call sp_execute. This relieves the need for sp_unprepare on prepared statement close if the statement is only executed once. The default for this option can be changed by calling setDefaultEnablePrepareOnFirstPreparedStatementCall().
        Specified by:
        getEnablePrepareOnFirstPreparedStatementCall in interface ISQLServerConnection
        Returns:
        Returns the current setting per the description.
      • setEnablePrepareOnFirstPreparedStatementCall

        public void setEnablePrepareOnFirstPreparedStatementCall​(boolean value)
        Description copied from interface: ISQLServerConnection
        Sets the behavior for a specific connection instance. If value is false the first execution will call sp_executesql and not prepare a statement, once the second execution happens it will call sp_prepexec and actually setup a prepared statement handle. Following executions will call sp_execute. This relieves the need for sp_unprepare on prepared statement close if the statement is only executed once.
        Specified by:
        setEnablePrepareOnFirstPreparedStatementCall in interface ISQLServerConnection
        Parameters:
        value - Changes the setting per the description.
      • getServerPreparedStatementDiscardThreshold

        public int getServerPreparedStatementDiscardThreshold()
        Description copied from interface: ISQLServerConnection
        Returns the behavior for a specific connection instance. This setting controls how many outstanding prepared statement discard actions (sp_unprepare) can be outstanding per connection before a call to clean-up the outstanding handles on the server is executed. If the setting is <= 1, unprepare actions will be executed immedietely on prepared statement close. If it is set to > 1, these calls will be batched together to avoid overhead of calling sp_unprepare too often. The default for this option can be changed by calling getDefaultServerPreparedStatementDiscardThreshold().
        Specified by:
        getServerPreparedStatementDiscardThreshold in interface ISQLServerConnection
        Returns:
        Returns the current setting per the description.
      • setServerPreparedStatementDiscardThreshold

        public void setServerPreparedStatementDiscardThreshold​(int value)
        Description copied from interface: ISQLServerConnection
        Sets the behavior for a specific connection instance. This setting controls how many outstanding prepared statement discard actions (sp_unprepare) can be outstanding per connection before a call to clean-up the outstanding handles on the server is executed. If the setting is <= 1 unprepare actions will be executed immedietely on prepared statement close. If it is set to > 1 these calls will be batched together to avoid overhead of calling sp_unprepare too often.
        Specified by:
        setServerPreparedStatementDiscardThreshold in interface ISQLServerConnection
        Parameters:
        value - Changes the setting per the description.
      • getDisableStatementPooling

        public boolean getDisableStatementPooling()
        Description copied from interface: ISQLServerConnection
        Returns the value whether statement pooling is disabled.
        Specified by:
        getDisableStatementPooling in interface ISQLServerConnection
        Returns:
        true if statement pooling is disabled, false if it is enabled.
      • setDisableStatementPooling

        public void setDisableStatementPooling​(boolean value)
        Description copied from interface: ISQLServerConnection
        Sets the value to Disable/enable statement pooling.
        Specified by:
        setDisableStatementPooling in interface ISQLServerConnection
        Parameters:
        value - true to disable statement pooling, false to enable it.
      • getStatementPoolingCacheSize

        public int getStatementPoolingCacheSize()
        Description copied from interface: ISQLServerConnection
        Returns the size of the prepared statement cache for this connection. A value less than 1 means no cache.
        Specified by:
        getStatementPoolingCacheSize in interface ISQLServerConnection
        Returns:
        Returns the current setting per the description.
      • isStatementPoolingEnabled

        public boolean isStatementPoolingEnabled()
        Description copied from interface: ISQLServerConnection
        Returns whether statement pooling is enabled or not for this connection.
        Specified by:
        isStatementPoolingEnabled in interface ISQLServerConnection
        Returns:
        Returns the current setting per the description.
      • setStatementPoolingCacheSize

        public void setStatementPoolingCacheSize​(int value)
        Description copied from interface: ISQLServerConnection
        Sets the size of the prepared statement cache for this connection. A value less than 1 means no cache.
        Specified by:
        setStatementPoolingCacheSize in interface ISQLServerConnection
        Parameters:
        value - The new cache size.