Class MicrosoftSQLServerDataStoreHelper
- java.lang.Object
-
- com.ibm.websphere.rsadapter.GenericDataStoreHelper
-
- com.ibm.websphere.rsadapter.MicrosoftSQLServerDataStoreHelper
-
- All Implemented Interfaces:
- DataStoreHelper
public class MicrosoftSQLServerDataStoreHelper extends GenericDataStoreHelper
MicrosoftSQLServerDataStoreHelper
is provided as an implementation of theDataStoreHelper
interface to enable connectivity to Microsoft SQL Server via the Microsoft SQL Server JDBC Driver. If you have additional requirements with the Microsoft SQL Server JDBC Driver or the Microsoft SQL Server database, you should consider subclassing this implementation.
Note: This class and its methods cannot be called or referenced directly by applications.SQLException
mappings specific to theMicrosoftSQLServerDataStoreHelper
are the following:Error Code SQL State PortableSQLException
subclass230 StaleConnectionException.class
2627 DuplicateKeyException.class
6002 StaleConnectionException.class
-
-
Field Summary
Fields Modifier and Type Field and Description static java.lang.String[]
LOCK_OWNER_TPYES
static java.lang.String[]
LOCK_REQUEST_MODES
static java.lang.String[]
LOCK_REQUEST_STATUSES
static java.lang.String[]
RESOURCE_TYPES
-
Fields inherited from class com.ibm.websphere.rsadapter.GenericDataStoreHelper
customDefinedWasDefaultIsoLevel, defaultQueryTimeout, EOLN, genErrorMap, resBundle, tranErrorList
-
Fields inherited from interface com.ibm.websphere.rsadapter.DataStoreHelper
CLOUDSCAPE_HELPER, CLOUDSCAPE_NETWORK_SERVER_HELPER, CONNECTJDBC_HELPER, CUSTOM_HELPER, DATADIRECT_HELPER, DB2_390_HELPER, DB2_390_LOCAL_HELPER, DB2_400_HELPER, DB2_HELPER, DB2_UNIVERSAL_HELPER, DERBY_HELPER, DERBY_NETWORK_SERVER_HELPER, FIRST_TIME_CALLED, GENERIC_HELPER, INFORMIX_HELPER, INFORMIX_JCC_HELPER, MSSQL_HELPER, ORACLE_10G_HELPER, ORACLE_11G_HELPER, ORACLE_HELPER, POTENTIAL_DEADLOCK, POTENTIAL_LOST_UPDATE, PROXY_DS_HELPER, SEQUELINK_HELPER, SUBJECT, SYBASE_HELPER, SYBASE11_HELPER, TX_REPEATABLE_READ_FORUPDATE, TX_SERIALIZABLE_FORUPDATE, UNDEFINED_HELPER, UNDEFINED_ISOLATOIN_LEVEL, UPDATE_ON_READONLY
-
-
Constructor Summary
Constructors Constructor and Description MicrosoftSQLServerDataStoreHelper(java.util.Properties props)
ThisMicrosoftSQLServerDataStoreHelper
constructor creates a newMicrosoftSQLServerDataStoreHelper
based on theDataStoreHelper
properties provided.
-
Method Summary
Methods Modifier and Type Method and Description void
doStatementCleanup(java.sql.PreparedStatement stmt)
This method cleans up a statement before the statement is returned to the statement cache.int
getIsolationLevel(AccessIntent intent)
This method determines the transaction isolation level based on the specifiedAccessIntent
.int
getResultSetConcurrency(AccessIntent intent)
This method determines the result set concurrency based on the specifiedAccessIntent
.java.lang.String
showLockInfo(java.util.Properties props)
This method returns lock information for Microsoft SQL Server.-
Methods inherited from class com.ibm.websphere.rsadapter.GenericDataStoreHelper
calcPartitionNumber, doConnectionCleanup, doConnectionCleanupPerCloseConnection, doConnectionCleanupWithValidCheck, doConnectionSetup, doConnectionSetupPerGetConnection, doConnectionSetupPerTransaction, findMappingClass, getLockType, getMetaData, getPasswordForUseWithTrustedContextWithAuthentication, getPrintWriter, getResultSetType, getXAExceptionContents, hasLostUpdateOrDeadLockOccurred, isBatchUpdateSupportedWithAccessIntent, isConnectionError, isDuplicateKey, isTransientConnectionError, mapException, modifyXAFlag, setConfig, setUserDefinedMap
-
-
-
-
Field Detail
-
RESOURCE_TYPES
public static final java.lang.String[] RESOURCE_TYPES
-
LOCK_REQUEST_STATUSES
public static final java.lang.String[] LOCK_REQUEST_STATUSES
-
LOCK_OWNER_TPYES
public static final java.lang.String[] LOCK_OWNER_TPYES
-
LOCK_REQUEST_MODES
public static final java.lang.String[] LOCK_REQUEST_MODES
-
-
Constructor Detail
-
MicrosoftSQLServerDataStoreHelper
public MicrosoftSQLServerDataStoreHelper(java.util.Properties props)
ThisMicrosoftSQLServerDataStoreHelper
constructor creates a newMicrosoftSQLServerDataStoreHelper
based on theDataStoreHelper
properties provided. All implementations inheriting from a data store helper must supply this same list of properties to their super class by invoking the constructor of their super class with the list of properties.- Parameters:
props
-DataStoreHelper
properties.
-
-
Method Detail
-
doStatementCleanup
public void doStatementCleanup(java.sql.PreparedStatement stmt) throws java.sql.SQLException
This method cleans up a statement before the statement is returned to the statement cache. This method is called only for statements that are cached. It is called only if at least one of the following statement properties has changed:
- cursorName
- fetchDirection
- maxFieldSize
- maxRows
- queryTimeout
- responseBuffering
MicrosoftSQLServerDataStoreHelper
resets all of the properties listed above.The following operations do not need to be included in the statement cleanup since they are automatically performed by the application server when caching statements,
setFetchSize(0)
clearParameters()
clearWarnings()
A helper class implementing this method may choose to do additional cleanup for the statement. However, this should never include closing the statement, since the statement is intended to be cached.
- Specified by:
doStatementCleanup
in interfaceDataStoreHelper
- Overrides:
doStatementCleanup
in classGenericDataStoreHelper
- Parameters:
stmt
- the PreparedStatement.- Throws:
java.sql.SQLException
- if an error occurs cleaning up the statement.
-
getIsolationLevel
public int getIsolationLevel(AccessIntent intent) throws javax.resource.ResourceException
This method determines the transaction isolation level based on the specifiedAccessIntent
. If theAccessIntent
parameter is null, the following default value is returned:Connection.TRANSACTION_REPEATABLE_READ.
In the case where an
AccessIntent
is specified,MicrosoftSQLServerDataStoreHelper
computes the transaction isolation level as follows:If the concurrency control is
AccessIntent.CONCURRENCY_CONTROL_OPTIMISTIC
then a transaction isolation level ofConnection.TRANSACTION_READ_COMMITTED
is returned.If the concurrency control is
AccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC
and the access type isAccessIntent.ACCESS_TYPE_READ
then a transaction isolation level ofConnection.TRANSACTION_REPEATABLE_READ
is returned.If the concurrency control is
AccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC
and the access type isAccessIntent.ACCESS_TYPE_UPDATE
then the transation isolation level is determined from the following table based on the pessimistic update lock hint.pessimistic update lock hint transaction isolation level AccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_NONE
AccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_WEAKEST_LOCK_AT_LOAD
Connection.TRANSACTION_REPEATABLE_READ
AccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_NOCOLLISION
Connection.TRANSACTION_READ_COMMITTED
AccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_EXCLUSIVE
Connection.TRANSACTION_SERIALIZABLE
- Specified by:
getIsolationLevel
in interfaceDataStoreHelper
- Overrides:
getIsolationLevel
in classGenericDataStoreHelper
- Parameters:
intent
- AnAccessIntent
- Returns:
- A transaction isolation level appropriate for the specified
AccessIntent
. - Throws:
javax.resource.ResourceException
- If a transaction isolation level cannot be determined from theAccessIntent
.- See Also:
AccessIntent
,Connection
-
getResultSetConcurrency
public int getResultSetConcurrency(AccessIntent intent) throws javax.resource.ResourceException
This method determines the result set concurrency based on the specifiedAccessIntent
.MicrosoftSQLServerDataStoreHelper
returnsjava.sql.ResultSet.CONCUR_UPDATABLE
if the access type of theAccessIntent
isAccessIntent.ACCESS_TYPE_UPDATE
and the concurrency control isAccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC
and the update lock hint is eitherAccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_EXCLUSIVE
orAccessIntent.PESSIMISTIC_UPDATE_LOCK_HINT_NONE
. In all other cases,java.sql.ResultSet.CONCUR_READ_ONLY
is returned.- Specified by:
getResultSetConcurrency
in interfaceDataStoreHelper
- Overrides:
getResultSetConcurrency
in classGenericDataStoreHelper
- Parameters:
intent
- AnAccessIntent
.- Returns:
- A result set concurrency constant defined on
java.sql.ResultSet
. - Throws:
javax.resource.ResourceException
- If a result set concurrency cannot be determined from theAccessIntent
.- See Also:
AccessIntent
,ResultSet
-
showLockInfo
public final java.lang.String showLockInfo(java.util.Properties props) throws java.lang.Exception
This method returns lock information for Microsoft SQL Server. The
props
parameter can include the following properties:- user user name that has a DBA authority. If not specified, a default value of "sa" is used.
- password the password corresponding to the user name. If not specified, a default value of "" (empty string) is used.
- serverName the server name where the Microsoft SQL Server database resides.
- portNumber the port where Microsoft SQL Server is listening.
- Overrides:
showLockInfo
in classGenericDataStoreHelper
- Parameters:
props
- properties containing information needed to connect to the database.- Returns:
- the lock information.
- Throws:
java.lang.Exception
- if an error occurs while collecting the lock information.
-
-