- java.lang.Object
-
- com.microsoft.sqlserver.jdbc.SQLServerStatement
-
- All Implemented Interfaces:
ISQLServerStatement,Serializable,AutoCloseable,Statement,Wrapper
- Direct Known Subclasses:
SQLServerPreparedStatement
public class SQLServerStatement extends Object implements ISQLServerStatement
Provides an implementation of java.sql.Statement JDBC Interface to assist in creating Statements against SQL Server. It also provides a number of base class implementation methods for the JDBC prepared statement and callable Statements. SQLServerStatement's basic role is to execute SQL statements and return update counts and resultset rows to the user application. Documentation for specific public methods that are undocumented can be found under Sun's standard JDBC documentation for class java.sql.Statement. Those methods are part of Sun's standard JDBC documentation and therefore their documentation is not duplicated here.Implementation Notes
Fetching Result sets
The queries first rowset is available immediately after the executeQuery. The first rs.next() does not make a server round trip. For non server side resultsets the entire result set is in the rowset. For server side result sets the number of rows in the rowset is set with nFetchSize
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.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanisSetByIndexChecks if the prepared statement's parameters were set by indexprotected booleanisSetByNameChecks if the callable statement's parameters are set by nameprotected SQLServerStatementColumnEncryptionSettingstmtColumnEncriptionSettingColumn Encryption Override.protected static intUSER_DEFINED_FUNCTION_RETURN_STATUS-
Fields inherited from interface java.sql.Statement
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddBatch(String sql)voidcancel()voidclearBatch()voidclearWarnings()voidclose()voidcloseOnCompletion()booleanexecute(String sql)booleanexecute(String sql, int autoGeneratedKeys)booleanexecute(String sql, int[] columnIndexes)booleanexecute(String sql, String[] columnNames)int[]executeBatch()Sends a batch of statements to the database.long[]executeLargeBatch()longexecuteLargeUpdate(String sql)longexecuteLargeUpdate(String sql, int autoGeneratedKeys)longexecuteLargeUpdate(String sql, int[] columnIndexes)longexecuteLargeUpdate(String sql, String[] columnNames)ResultSetexecuteQuery(String sql)intexecuteUpdate(String sql)intexecuteUpdate(String sql, int autoGeneratedKeys)intexecuteUpdate(String sql, int[] columnIndexes)intexecuteUpdate(String sql, String[] columnNames)intgetCancelQueryTimeout()Returns thecancelQueryTimeoutproperty set on this SQLServerStatement object.ConnectiongetConnection()Returns the statement's connection.intgetFetchDirection()intgetFetchSize()ResultSetgetGeneratedKeys()longgetLargeMaxRows()longgetLargeUpdateCount()intgetMaxFieldSize()intgetMaxRows()booleangetMoreResults()Returns more results in the TDS stream.booleangetMoreResults(int mode)intgetQueryTimeout()StringgetResponseBuffering()Returns the response buffering mode for this SQLServerStatement object.ResultSetgetResultSet()intgetResultSetConcurrency()intgetResultSetHoldability()intgetResultSetType()protected SQLServerStatementColumnEncryptionSettinggetStmtColumnEncriptionSetting()Returns the statement column encryption encryption settingintgetUpdateCount()SQLWarninggetWarnings()booleanisClosed()booleanisCloseOnCompletion()booleanisPoolable()booleanisWrapperFor(Class<?> iface)voidregisterColumnEncryptionKeyStoreProvidersOnStatement(Map<String,SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)Registers statement-level key store providers, replacing all existing providers.voidsetCancelQueryTimeout(int seconds)Sets thecancelQueryTimeoutproperty on this SQLServerStatement object to cancelqueryTimeoutset onConnectionorStatementlevel.voidsetCursorName(String name)voidsetEscapeProcessing(boolean enable)voidsetFetchDirection(int nDir)voidsetFetchSize(int rows)voidsetLargeMaxRows(long max)voidsetMaxFieldSize(int max)voidsetMaxRows(int max)voidsetPoolable(boolean poolable)voidsetQueryTimeout(int seconds)voidsetResponseBuffering(String value)Sets the response buffering mode for this SQLServerStatement object to case-insensitive String full or adaptive.StringtoString()Returns the statement's id for logging info<T> Tunwrap(Class<T> iface)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.sql.Statement
enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, isSimpleIdentifier
-
-
-
-
Field Detail
-
USER_DEFINED_FUNCTION_RETURN_STATUS
protected static final int USER_DEFINED_FUNCTION_RETURN_STATUS
- See Also:
- Constant Field Values
-
isSetByName
protected boolean isSetByName
Checks if the callable statement's parameters are set by name
-
isSetByIndex
protected boolean isSetByIndex
Checks if the prepared statement's parameters were set by index
-
stmtColumnEncriptionSetting
protected SQLServerStatementColumnEncryptionSetting stmtColumnEncriptionSetting
Column Encryption Override. Defaults to the connection setting, in which case it will be Enabled if columnEncryptionSetting = true in the connection setting, Disabled if false. This may also be used to set other behavior which overrides connection level setting.
-
-
Method Detail
-
getStmtColumnEncriptionSetting
protected SQLServerStatementColumnEncryptionSetting getStmtColumnEncriptionSetting()
Returns the statement column encryption encryption setting- Returns:
- stmtColumnEncriptionSetting
-
toString
public String toString()
Returns the statement's id for logging info
-
close
public void close() throws SQLServerException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceStatement- Throws:
SQLServerException
-
closeOnCompletion
public void closeOnCompletion() throws SQLException- Specified by:
closeOnCompletionin interfaceStatement- Throws:
SQLException
-
executeQuery
public ResultSet executeQuery(String sql) throws SQLServerException, SQLTimeoutException
- Specified by:
executeQueryin interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeUpdate
public int executeUpdate(String sql) throws SQLServerException, SQLTimeoutException
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeLargeUpdate
public long executeLargeUpdate(String sql) throws SQLServerException, SQLTimeoutException
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
execute
public boolean execute(String sql) throws SQLServerException, SQLTimeoutException
- Specified by:
executein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
getMaxFieldSize
public final int getMaxFieldSize() throws SQLServerException- Specified by:
getMaxFieldSizein interfaceStatement- Throws:
SQLServerException
-
setMaxFieldSize
public final void setMaxFieldSize(int max) throws SQLServerException- Specified by:
setMaxFieldSizein interfaceStatement- Throws:
SQLServerException
-
getMaxRows
public final int getMaxRows() throws SQLServerException- Specified by:
getMaxRowsin interfaceStatement- Throws:
SQLServerException
-
getLargeMaxRows
public final long getLargeMaxRows() throws SQLServerException- Specified by:
getLargeMaxRowsin interfaceStatement- Throws:
SQLServerException
-
setMaxRows
public final void setMaxRows(int max) throws SQLServerException- Specified by:
setMaxRowsin interfaceStatement- Throws:
SQLServerException
-
setLargeMaxRows
public final void setLargeMaxRows(long max) throws SQLServerException- Specified by:
setLargeMaxRowsin interfaceStatement- Throws:
SQLServerException
-
setEscapeProcessing
public final void setEscapeProcessing(boolean enable) throws SQLServerException- Specified by:
setEscapeProcessingin interfaceStatement- Throws:
SQLServerException
-
getQueryTimeout
public final int getQueryTimeout() throws SQLServerException- Specified by:
getQueryTimeoutin interfaceStatement- Throws:
SQLServerException
-
setQueryTimeout
public final void setQueryTimeout(int seconds) throws SQLServerException- Specified by:
setQueryTimeoutin interfaceStatement- Throws:
SQLServerException
-
getCancelQueryTimeout
public final int getCancelQueryTimeout() throws SQLServerExceptionDescription copied from interface:ISQLServerStatementReturns thecancelQueryTimeoutproperty set on this SQLServerStatement object.- Specified by:
getCancelQueryTimeoutin interfaceISQLServerStatement- Returns:
- cancelQueryTimeout Time duration in seconds.
- Throws:
SQLServerException- if any error occurs
-
setCancelQueryTimeout
public final void setCancelQueryTimeout(int seconds) throws SQLServerExceptionDescription copied from interface:ISQLServerStatementSets thecancelQueryTimeoutproperty on this SQLServerStatement object to cancelqueryTimeoutset onConnectionorStatementlevel.- Specified by:
setCancelQueryTimeoutin interfaceISQLServerStatement- Parameters:
seconds- Time duration in seconds.- Throws:
SQLServerException- if any error occurs
-
cancel
public final void cancel() throws SQLServerException- Specified by:
cancelin interfaceStatement- Throws:
SQLServerException
-
getWarnings
public final SQLWarning getWarnings() throws SQLServerException
- Specified by:
getWarningsin interfaceStatement- Throws:
SQLServerException
-
clearWarnings
public final void clearWarnings() throws SQLServerException- Specified by:
clearWarningsin interfaceStatement- Throws:
SQLServerException
-
setCursorName
public final void setCursorName(String name) throws SQLServerException
- Specified by:
setCursorNamein interfaceStatement- Throws:
SQLServerException
-
getResultSet
public final ResultSet getResultSet() throws SQLServerException
- Specified by:
getResultSetin interfaceStatement- Throws:
SQLServerException
-
getUpdateCount
public final int getUpdateCount() throws SQLServerException- Specified by:
getUpdateCountin interfaceStatement- Throws:
SQLServerException
-
getLargeUpdateCount
public final long getLargeUpdateCount() throws SQLServerException- Specified by:
getLargeUpdateCountin interfaceStatement- Throws:
SQLServerException
-
getMoreResults
public final boolean getMoreResults() throws SQLServerExceptionReturns more results in the TDS stream.- Specified by:
getMoreResultsin interfaceStatement- Returns:
- true if the next result is a ResultSet object; false if it is an integer (indicating that it is an update count or there are no more results).
- Throws:
SQLServerException
-
setFetchDirection
public final void setFetchDirection(int nDir) throws SQLServerException- Specified by:
setFetchDirectionin interfaceStatement- Throws:
SQLServerException
-
getFetchDirection
public final int getFetchDirection() throws SQLServerException- Specified by:
getFetchDirectionin interfaceStatement- Throws:
SQLServerException
-
setFetchSize
public final void setFetchSize(int rows) throws SQLServerException- Specified by:
setFetchSizein interfaceStatement- Throws:
SQLServerException
-
getFetchSize
public final int getFetchSize() throws SQLServerException- Specified by:
getFetchSizein interfaceStatement- Throws:
SQLServerException
-
getResultSetConcurrency
public final int getResultSetConcurrency() throws SQLServerException- Specified by:
getResultSetConcurrencyin interfaceStatement- Throws:
SQLServerException
-
getResultSetType
public final int getResultSetType() throws SQLServerException- Specified by:
getResultSetTypein interfaceStatement- Throws:
SQLServerException
-
addBatch
public void addBatch(String sql) throws SQLServerException
- Specified by:
addBatchin interfaceStatement- Throws:
SQLServerException
-
clearBatch
public void clearBatch() throws SQLServerException- Specified by:
clearBatchin interfaceStatement- Throws:
SQLServerException
-
executeBatch
public int[] executeBatch() throws SQLServerException, BatchUpdateException, SQLTimeoutExceptionSends a batch of statements to the database.- Specified by:
executeBatchin interfaceStatement- Throws:
SQLServerExceptionBatchUpdateExceptionSQLTimeoutException
-
executeLargeBatch
public long[] executeLargeBatch() throws SQLServerException, BatchUpdateException, SQLTimeoutException- Specified by:
executeLargeBatchin interfaceStatement- Throws:
SQLServerExceptionBatchUpdateExceptionSQLTimeoutException
-
getConnection
public final Connection getConnection() throws SQLServerException
Returns the statement's connection.- Specified by:
getConnectionin interfaceStatement- Returns:
- the connection
- Throws:
SQLServerException- when an error occurs
-
getResultSetHoldability
public final int getResultSetHoldability() throws SQLException- Specified by:
getResultSetHoldabilityin interfaceStatement- Throws:
SQLException
-
execute
public final boolean execute(String sql, int autoGeneratedKeys) throws SQLServerException, SQLTimeoutException
- Specified by:
executein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
execute
public final boolean execute(String sql, int[] columnIndexes) throws SQLServerException, SQLTimeoutException
- Specified by:
executein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
execute
public final boolean execute(String sql, String[] columnNames) throws SQLServerException, SQLTimeoutException
- Specified by:
executein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeUpdate
public final int executeUpdate(String sql, int autoGeneratedKeys) throws SQLServerException, SQLTimeoutException
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeLargeUpdate
public final long executeLargeUpdate(String sql, int autoGeneratedKeys) throws SQLServerException, SQLTimeoutException
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeUpdate
public final int executeUpdate(String sql, int[] columnIndexes) throws SQLServerException, SQLTimeoutException
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeLargeUpdate
public final long executeLargeUpdate(String sql, int[] columnIndexes) throws SQLServerException, SQLTimeoutException
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeUpdate
public final int executeUpdate(String sql, String[] columnNames) throws SQLServerException, SQLTimeoutException
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
executeLargeUpdate
public final long executeLargeUpdate(String sql, String[] columnNames) throws SQLServerException, SQLTimeoutException
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLServerExceptionSQLTimeoutException
-
getGeneratedKeys
public final ResultSet getGeneratedKeys() throws SQLServerException
- Specified by:
getGeneratedKeysin interfaceStatement- Throws:
SQLServerException
-
getMoreResults
public final boolean getMoreResults(int mode) throws SQLException- Specified by:
getMoreResultsin interfaceStatement- Throws:
SQLException
-
isClosed
public boolean isClosed() throws SQLException- Specified by:
isClosedin interfaceStatement- Throws:
SQLException
-
isCloseOnCompletion
public boolean isCloseOnCompletion() throws SQLException- Specified by:
isCloseOnCompletionin interfaceStatement- Throws:
SQLException
-
isPoolable
public boolean isPoolable() throws SQLException- Specified by:
isPoolablein interfaceStatement- Throws:
SQLException
-
setPoolable
public void setPoolable(boolean poolable) throws SQLException- Specified by:
setPoolablein interfaceStatement- Throws:
SQLException
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface) throws SQLException
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
setResponseBuffering
public final void setResponseBuffering(String value) throws SQLServerException
Description copied from interface:ISQLServerStatementSets the response buffering mode for this SQLServerStatement object to case-insensitive String full or adaptive.Response buffering controls the driver's buffering of responses from SQL Server.
Possible values are:
"full" - Fully buffer the response at execution time.
"adaptive" - Data Pipe adaptive buffering
- Specified by:
setResponseBufferingin interfaceISQLServerStatement- Parameters:
value- A String that contains the response buffering mode. The valid mode can be one of the following case-insensitive Strings: full or adaptive.- Throws:
SQLServerException- If there are any errors in setting the response buffering mode.
-
getResponseBuffering
public final String getResponseBuffering() throws SQLServerException
Description copied from interface:ISQLServerStatementReturns the response buffering mode for this SQLServerStatement object.- Specified by:
getResponseBufferingin interfaceISQLServerStatement- Returns:
- A String that contains a lower-case full or adaptive.
- Throws:
SQLServerException- If there are any errors in retrieving the response buffering mode.
-
registerColumnEncryptionKeyStoreProvidersOnStatement
public void registerColumnEncryptionKeyStoreProvidersOnStatement(Map<String,SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) throws SQLServerException
Registers statement-level key store providers, replacing all existing providers.- Parameters:
clientKeyStoreProviders- a map containing the store providers information.- Throws:
SQLServerException- when an error occurs
-
-