Class SQLServerConnection

java.lang.Object
com.microsoft.sqlserver.jdbc.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 Details

    • 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.
    • getSendTimeAsDatetime

      public final boolean getSendTimeAsDatetime()
      Description copied from interface: ISQLServerConnection
      Returns the value of the sendTimeAsDatetime property.
      Specified by:
      getSendTimeAsDatetime in interface ISQLServerConnection
      Returns:
      boolean value of sendTimeAsDatetime
    • getDelayLoadingLobs

      public boolean getDelayLoadingLobs()
      Description copied from interface: ISQLServerConnection
      Returns the current flag value for delayLoadingLobs.
      Specified by:
      getDelayLoadingLobs in interface ISQLServerConnection
      Returns:
      'delayLoadingLobs' property value.
    • setDelayLoadingLobs

      public void setDelayLoadingLobs​(boolean b)
      Description copied from interface: ISQLServerConnection
      Specifies the flag to immediately load LOB objects into memory.
      Specified by:
      setDelayLoadingLobs in interface ISQLServerConnection
      Parameters:
      b - boolean value for 'delayLoadingLobs'.
    • 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
    • unregisterColumnEncryptionKeyStoreProviders

      public static void unregisterColumnEncryptionKeyStoreProviders()
      Unregisters all the custom key store providers from the globalCustomColumnEncryptionKeyStoreProviders by clearing the map and setting it to null.
    • 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.
    • clearUserTokenCache

      public static void clearUserTokenCache()
      Clears User token cache. This will clear all account info so interactive login will be required on the next request to acquire an access token.
    • 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
    • getAutoCommit

      public boolean getAutoCommit() throws SQLServerException
      Specified by:
      getAutoCommit in interface java.sql.Connection
      Throws:
      SQLServerException
    • commit

      public void commit() throws SQLServerException
      Specified by:
      commit in interface java.sql.Connection
      Throws:
      SQLServerException
    • commit

      public void commit​(boolean delayedDurability) throws SQLServerException
      Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by this Connection object. This method should be used only when auto-commit mode has been disabled.
      Parameters:
      delayedDurability - flag to indicate whether the commit will occur with delayed durability on.
      Throws:
      SQLServerException - Exception if a database access error occurs
    • rollback

      public void rollback() throws SQLServerException
      Specified by:
      rollback 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
    • isClosed

      public boolean isClosed() throws SQLServerException
      Specified by:
      isClosed in interface java.sql.Connection
      Throws:
      SQLServerException
    • getMetaData

      public java.sql.DatabaseMetaData getMetaData() throws SQLServerException
      Specified by:
      getMetaData in interface java.sql.Connection
      Throws:
      SQLServerException
    • setReadOnly

      public void setReadOnly​(boolean readOnly) throws SQLServerException
      Specified by:
      setReadOnly in interface java.sql.Connection
      Throws:
      SQLServerException
    • isReadOnly

      public boolean isReadOnly() throws SQLServerException
      Specified by:
      isReadOnly 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
    • getCatalog

      public java.lang.String getCatalog() throws SQLServerException
      Specified by:
      getCatalog 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
    • getWarnings

      public java.sql.SQLWarning getWarnings() throws SQLServerException
      Specified by:
      getWarnings in interface java.sql.Connection
      Throws:
      SQLServerException
    • clearWarnings

      public void clearWarnings() throws SQLServerException
      Specified by:
      clearWarnings 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
    • setSavepoint

      public java.sql.Savepoint setSavepoint() throws SQLServerException
      Specified by:
      setSavepoint in interface java.sql.Connection
      Throws:
      SQLServerException
    • rollback

      public void rollback​(java.sql.Savepoint s) throws SQLServerException
      Specified by:
      rollback in interface java.sql.Connection
      Throws:
      SQLServerException
    • getHoldability

      public int getHoldability() throws SQLServerException
      Specified by:
      getHoldability 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'.
    • getUseFmtOnly

      public final boolean getUseFmtOnly()
      Description copied from interface: ISQLServerConnection
      Returns the current flag value for useFmtOnly.
      Specified by:
      getUseFmtOnly in interface ISQLServerConnection
      Returns:
      'useFmtOnly' property value.
    • 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
    • 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
    • getDiscardedServerPreparedStatementCount

      public int getDiscardedServerPreparedStatementCount()
      Description copied from interface: ISQLServerConnection
      Returns the number of currently outstanding prepared statement un-prepare actions.
      Specified by:
      getDiscardedServerPreparedStatementCount in interface ISQLServerConnection
      Returns:
      Returns the current value per the description.
    • closeUnreferencedPreparedStatementHandles

      public void closeUnreferencedPreparedStatementHandles()
      Description copied from interface: ISQLServerConnection
      Forces the un-prepare requests for any outstanding discarded prepared statements to be executed.
      Specified by:
      closeUnreferencedPreparedStatementHandles in interface ISQLServerConnection
    • 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.
    • getStatementHandleCacheEntryCount

      public int getStatementHandleCacheEntryCount()
      Description copied from interface: ISQLServerConnection
      Returns the current number of pooled prepared statement handles.
      Specified by:
      getStatementHandleCacheEntryCount 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.