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
-
-
Field Summary
-
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
-
Fields inherited from interface com.microsoft.sqlserver.jdbc.ISQLServerConnection
TRANSACTION_SNAPSHOT
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abort(java.util.concurrent.Executor executor)
protected void
beginRequestInternal()
void
clearWarnings()
void
close()
void
closeUnreferencedPreparedStatementHandles()
Forces the un-prepare requests for any outstanding discarded prepared statements to be executed.void
commit()
java.sql.Array
createArrayOf(java.lang.String typeName, java.lang.Object[] elements)
java.sql.Blob
createBlob()
java.sql.Clob
createClob()
java.sql.NClob
createNClob()
java.sql.SQLXML
createSQLXML()
java.sql.Statement
createStatement()
java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency)
java.sql.Statement
createStatement(int nType, int nConcur, int resultSetHoldability)
java.sql.Statement
createStatement(int nType, int nConcur, int resultSetHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
Creates aStatement
object that will generateResultSet
objects with the given type, concurrency, and holdability.java.sql.Struct
createStruct(java.lang.String typeName, java.lang.Object[] attributes)
protected void
endRequestInternal()
boolean
getAutoCommit()
java.lang.String
getCatalog()
java.util.UUID
getClientConnectionId()
Returns the connection ID of the most recent connection attempt, regardless of whether the attempt succeeded or failed.java.util.Properties
getClientInfo()
java.lang.String
getClientInfo(java.lang.String name)
static java.util.Map<java.lang.String,java.util.List<java.lang.String>>
getColumnEncryptionTrustedMasterKeyPaths()
Returns the Trusted Master Key Paths.boolean
getDisableStatementPooling()
Returns the value whether statement pooling is disabled.int
getDiscardedServerPreparedStatementCount()
Returns the number of currently outstanding prepared statement un-prepare actions.boolean
getEnablePrepareOnFirstPreparedStatementCall()
Returns the behavior for a specific connection instance.int
getHoldability()
java.sql.DatabaseMetaData
getMetaData()
int
getNetworkTimeout()
java.lang.String
getSchema()
boolean
getSendTimeAsDatetime()
Returns the value of the sendTimeAsDatetime property.int
getServerPreparedStatementDiscardThreshold()
Returns the behavior for a specific connection instance.int
getStatementHandleCacheEntryCount()
Returns the current number of pooled prepared statement handles.int
getStatementPoolingCacheSize()
Returns the size of the prepared statement cache for this connection.int
getTransactionIsolation()
java.util.Map<java.lang.String,java.lang.Class<?>>
getTypeMap()
boolean
getUseBulkCopyForBatchInsert()
Returns the useBulkCopyForBatchInsert value.boolean
getUseFmtOnly()
Returns the current flag value for useFmtOnly.java.sql.SQLWarning
getWarnings()
boolean
isClosed()
boolean
isReadOnly()
boolean
isStatementPoolingEnabled()
Returns whether statement pooling is enabled or not for this connection.boolean
isValid(int timeout)
Determine whether the connection is still valid.boolean
isWrapperFor(java.lang.Class<?> iface)
java.lang.String
nativeSQL(java.lang.String sql)
protected boolean
needsReconnect()
Returns if Federated Authentication is in use or is about to expire soonjava.sql.CallableStatement
prepareCall(java.lang.String sql)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int nType, int nConcur, int resultSetHoldability)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int nType, int nConcur, int resultSetHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetiing)
Creates aCallableStatement
object that will generateResultSet
objects with the given type and concurrency.java.sql.PreparedStatement
prepareStatement(java.lang.String sql)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int flag)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int[] columnIndexes)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
Creates a defaultPreparedStatement
object capable of returning the auto-generated keys designated by the given array.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int nType, int nConcur, int resultSetHoldability)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int nType, int nConcur, int resultSetHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
Creates aPreparedStatement
object that will generateResultSet
objects with the given type, concurrency, and holdability.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int flag, SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
Creates a defaultPreparedStatement
object that has the capability to retrieve auto-generated keys.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, java.lang.String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting)
Creates a defaultPreparedStatement
object capable of returning the auto-generated keys designated by the given array.static void
registerColumnEncryptionKeyStoreProviders(java.util.Map<java.lang.String,SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Registers key store providers in the globalCustomColumnEncryptionKeyStoreProviders.void
releaseSavepoint(java.sql.Savepoint savepoint)
static void
removeColumnEncryptionTrustedMasterKeyPaths(java.lang.String server)
Removes the trusted Master key Path from the columnEncryptionTrustedMasterKeyPaths.void
rollback()
void
rollback(java.sql.Savepoint s)
void
setAutoCommit(boolean newAutoCommitMode)
void
setCatalog(java.lang.String catalog)
void
setClientInfo(java.lang.String name, java.lang.String value)
void
setClientInfo(java.util.Properties properties)
static void
setColumnEncryptionKeyCacheTtl(int columnEncryptionKeyCacheTTL, java.util.concurrent.TimeUnit unit)
Sets time-to-live for column encryption key entries in the column encryption key cache for the Always Encrypted feature.static void
setColumnEncryptionTrustedMasterKeyPaths(java.util.Map<java.lang.String,java.util.List<java.lang.String>> trustedKeyPaths)
Sets Trusted Master Key Paths in the columnEncryptionTrustedMasterKeyPaths.void
setDisableStatementPooling(boolean value)
Sets the value to Disable/enable statement pooling.void
setEnablePrepareOnFirstPreparedStatementCall(boolean value)
Sets the behavior for a specific connection instance.void
setHoldability(int holdability)
void
setNetworkTimeout(java.util.concurrent.Executor executor, int timeout)
void
setReadOnly(boolean readOnly)
java.sql.Savepoint
setSavepoint()
java.sql.Savepoint
setSavepoint(java.lang.String sName)
void
setSchema(java.lang.String schema)
void
setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue)
Sets the value of the sendTimeAsDatetime connection property.void
setServerPreparedStatementDiscardThreshold(int value)
Sets the behavior for a specific connection instance.void
setStatementPoolingCacheSize(int value)
Sets the size of the prepared statement cache for this connection.void
setTransactionIsolation(int level)
void
setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map)
void
setUseBulkCopyForBatchInsert(boolean useBulkCopyForBatchInsert)
Specifies the flag for using Bulk Copy API for batch insert operations.void
setUseFmtOnly(boolean useFmtOnly)
Specifies the flag to use FMTONLY for parameter metadata queries.java.lang.String
toString()
Provides a helper function to return an ID string suitable for tracing.<T> T
unwrap(java.lang.Class<T> iface)
static void
updateColumnEncryptionTrustedMasterKeyPaths(java.lang.String server, java.util.List<java.lang.String> trustedKeyPaths)
Updates the columnEncryptionTrustedMasterKeyPaths with the new Server and trustedKeyPaths.
-
-
-
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.
-
getSendTimeAsDatetime
public final boolean getSendTimeAsDatetime()
Description copied from interface:ISQLServerConnection
Returns the value of the sendTimeAsDatetime property.- Specified by:
getSendTimeAsDatetime
in interfaceISQLServerConnection
- Returns:
- boolean value of sendTimeAsDatetime
-
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 nametrustedKeyPaths
- 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 interfaceISQLServerConnection
- 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 classjava.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 interfacejava.sql.Connection
- Throws:
SQLServerException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql) throws SQLServerException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql) throws SQLServerException
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
nativeSQL
public java.lang.String nativeSQL(java.lang.String sql) throws SQLServerException
- Specified by:
nativeSQL
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setAutoCommit
public void setAutoCommit(boolean newAutoCommitMode) throws SQLServerException
- Specified by:
setAutoCommit
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getAutoCommit
public boolean getAutoCommit() throws SQLServerException
- Specified by:
getAutoCommit
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
commit
public void commit() throws SQLServerException
- Specified by:
commit
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
rollback
public void rollback() throws SQLServerException
- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
abort
public void abort(java.util.concurrent.Executor executor) throws java.sql.SQLException
- Specified by:
abort
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
close
public void close() throws SQLServerException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
isClosed
public boolean isClosed() throws SQLServerException
- Specified by:
isClosed
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getMetaData
public java.sql.DatabaseMetaData getMetaData() throws SQLServerException
- Specified by:
getMetaData
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setReadOnly
public void setReadOnly(boolean readOnly) throws SQLServerException
- Specified by:
setReadOnly
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
isReadOnly
public boolean isReadOnly() throws SQLServerException
- Specified by:
isReadOnly
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setCatalog
public void setCatalog(java.lang.String catalog) throws SQLServerException
- Specified by:
setCatalog
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getCatalog
public java.lang.String getCatalog() throws SQLServerException
- Specified by:
getCatalog
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws SQLServerException
- Specified by:
setTransactionIsolation
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getTransactionIsolation
public int getTransactionIsolation() throws SQLServerException
- Specified by:
getTransactionIsolation
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getWarnings
public java.sql.SQLWarning getWarnings() throws SQLServerException
- Specified by:
getWarnings
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
clearWarnings
public void clearWarnings() throws SQLServerException
- Specified by:
clearWarnings
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLServerException
- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws SQLServerException
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws SQLServerException
- Specified by:
prepareCall
in interfacejava.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 interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getTypeMap
public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws SQLServerException
- Specified by:
getTypeMap
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
createStatement
public java.sql.Statement createStatement(int nType, int nConcur, int resultSetHoldability) throws SQLServerException
- Specified by:
createStatement
in interfacejava.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 aStatement
object that will generateResultSet
objects with the given type, concurrency, and holdability. This method is the same as thecreateStatement
method above, but it allows the default result set type, concurrency, and holdability to be overridden.- Specified by:
createStatement
in interfaceISQLServerConnection
- Parameters:
nType
- one of the followingResultSet
constants:ResultSet.TYPE_FORWARD_ONLY
,ResultSet.TYPE_SCROLL_INSENSITIVE
, orResultSet.TYPE_SCROLL_SENSITIVE
nConcur
- one of the followingResultSet
constants:ResultSet.CONCUR_READ_ONLY
orResultSet.CONCUR_UPDATABLE
resultSetHoldability
- one of the followingResultSet
constants:ResultSet.HOLD_CURSORS_OVER_COMMIT
orResultSet.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 generateResultSet
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 notResultSet
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 interfacejava.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 aPreparedStatement
object that will generateResultSet
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 interfaceISQLServerConnection
- Parameters:
sql
- aString
object that is the SQL statement to be sent to the database; may contain one or more '?' IN parametersnType
- one of the followingResultSet
constants:ResultSet.TYPE_FORWARD_ONLY
,ResultSet.TYPE_SCROLL_INSENSITIVE
, orResultSet.TYPE_SCROLL_SENSITIVE
nConcur
- one of the followingResultSet
constants:ResultSet.CONCUR_READ_ONLY
orResultSet.CONCUR_UPDATABLE
resultSetHoldability
- one of the followingResultSet
constants:ResultSet.HOLD_CURSORS_OVER_COMMIT
orResultSet.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 generateResultSet
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 notResultSet
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 interfacejava.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 aCallableStatement
object that will generateResultSet
objects with the given type and concurrency. This method is the same as theprepareCall
method above, but it allows the default result set type, result set concurrency type and holdability to be overridden.- Specified by:
prepareCall
in interfaceISQLServerConnection
- Parameters:
sql
- aString
object that is the SQL statement to be sent to the database; may contain on or more '?' parametersnType
- one of the followingResultSet
constants:ResultSet.TYPE_FORWARD_ONLY
,ResultSet.TYPE_SCROLL_INSENSITIVE
, orResultSet.TYPE_SCROLL_SENSITIVE
nConcur
- one of the followingResultSet
constants:ResultSet.CONCUR_READ_ONLY
orResultSet.CONCUR_UPDATABLE
resultSetHoldability
- one of the followingResultSet
constants:ResultSet.HOLD_CURSORS_OVER_COMMIT
orResultSet.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 generateResultSet
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 notResultSet
constants indicating type, concurrency, and holdability
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int flag) throws SQLServerException
- Specified by:
prepareStatement
in interfacejava.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 defaultPreparedStatement
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 anINSERT
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 thePreparedStatement
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 typeTYPE_FORWARD_ONLY
and have a concurrency level ofCONCUR_READ_ONLY
. The holdability of the created result sets can be determined by callingConnection.getHoldability()
.- Specified by:
prepareStatement
in interfaceISQLServerConnection
- Parameters:
sql
- an SQL statement that may contain one or more '?' IN parameter placeholdersflag
- a flag indicating whether auto-generated keys should be returned; one ofStatement.RETURN_GENERATED_KEYS
orStatement.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 aStatement
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 interfacejava.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 defaultPreparedStatement
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 anINSERT
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 thePreparedStatement
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 typeTYPE_FORWARD_ONLY
and have a concurrency level ofCONCUR_READ_ONLY
. The holdability of the created result sets can be determined by callingConnection.getHoldability()
.- Specified by:
prepareStatement
in interfaceISQLServerConnection
- Parameters:
sql
- an SQL statement that may contain one or more '?' IN parameter placeholderscolumnIndexes
- an array of column indexes indicating the columns that should be returned from the inserted row or rowsstmtColEncSetting
- 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 interfacejava.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 defaultPreparedStatement
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 anINSERT
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 thePreparedStatement
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 typeTYPE_FORWARD_ONLY
and have a concurrency level ofCONCUR_READ_ONLY
. The holdability of the created result sets can be determined by callingConnection.getHoldability()
.- Specified by:
prepareStatement
in interfaceISQLServerConnection
- Parameters:
sql
- an SQL statement that may contain one or more '?' IN parameter placeholderscolumnNames
- an array of column names indicating the columns that should be returned from the inserted row or rowsstmtColEncSetting
- 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 interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSavepoint
public java.sql.Savepoint setSavepoint(java.lang.String sName) throws SQLServerException
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setSavepoint
public java.sql.Savepoint setSavepoint() throws SQLServerException
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
rollback
public void rollback(java.sql.Savepoint s) throws SQLServerException
- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getHoldability
public int getHoldability() throws SQLServerException
- Specified by:
getHoldability
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
setHoldability
public void setHoldability(int holdability) throws SQLServerException
- Specified by:
setHoldability
in interfacejava.sql.Connection
- Throws:
SQLServerException
-
getNetworkTimeout
public int getNetworkTimeout() throws java.sql.SQLException
- Specified by:
getNetworkTimeout
in interfacejava.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 interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getSchema
public java.lang.String getSchema() throws java.sql.SQLException
- Specified by:
getSchema
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSchema
public void setSchema(java.lang.String schema) throws java.sql.SQLException
- Specified by:
setSchema
in interfacejava.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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createBlob
public java.sql.Blob createBlob() throws java.sql.SQLException
- Specified by:
createBlob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createClob
public java.sql.Clob createClob() throws java.sql.SQLException
- Specified by:
createClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createNClob
public java.sql.NClob createNClob() throws java.sql.SQLException
- Specified by:
createNClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createSQLXML
public java.sql.SQLXML createSQLXML() throws java.sql.SQLException
- Specified by:
createSQLXML
in interfacejava.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 interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getClientInfo
public java.util.Properties getClientInfo() throws java.sql.SQLException
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getClientInfo
public java.lang.String getClientInfo(java.lang.String name) throws java.sql.SQLException
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setClientInfo
public void setClientInfo(java.util.Properties properties) throws java.sql.SQLClientInfoException
- Specified by:
setClientInfo
in interfacejava.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 interfacejava.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 interfacejava.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 interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
- Specified by:
unwrap
in interfacejava.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 secondsunit
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
-
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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- 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 interfaceISQLServerConnection
- Parameters:
value
- The new cache size.
-
-