Class FBStatement
- java.lang.Object
-
- org.firebirdsql.jdbc.FBStatement
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.sql.Statement
,java.sql.Wrapper
,FirebirdStatement
,Synchronizable
- Direct Known Subclasses:
AbstractPreparedStatement
public class FBStatement extends java.lang.Object implements FirebirdStatement, Synchronizable
Implementation ofStatement
.- Author:
- David Jencks, Mark Rotteveel
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
FBStatement.StatementResult
The current result of a statement.
-
Field Summary
Fields Modifier and Type Field Description protected boolean
completed
protected FBConnection
connection
protected FBStatement.StatementResult
currentStatementResult
protected FbStatement
fbStatement
protected int
fetchSize
protected java.sql.SQLWarning
firstWarning
protected GDSHelper
gdsHelper
protected boolean
isSingletonResult
protected static JdbcVersionSupport
jdbcVersionSupport
protected int
maxRows
protected java.util.List<RowValue>
specialResult
protected FBObjectListener.StatementListener
statementListener
-
Constructor Summary
Constructors Modifier Constructor Description protected
FBStatement(GDSHelper c, int rsType, int rsConcurrency, int rsHoldability, FBObjectListener.StatementListener statementListener)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBatch(java.lang.String sql)
protected void
addWarning(java.sql.SQLWarning warning)
void
cancel()
protected void
checkValidity()
Check if this statement is valid.void
clearBatch()
void
clearWarnings()
void
close()
void
closeOnCompletion()
void
completeStatement()
void
completeStatement(CompletionReason reason)
protected FBResultSet
createSpecialResultSet(FBObjectListener.ResultSetListener resultSetListener)
Create the result set forspecialResult
.protected StatementListener
createStatementListener()
Creates theStatementListener
to be associated with the instance ofFbStatement
created for thisFBStatement
or subclasses.java.lang.String
enquoteIdentifier(java.lang.String identifier, boolean alwaysQuote)
Returns a SQL identifier.java.lang.String
enquoteLiteral(java.lang.String val)
Returns aString
enclosed in single quotes.java.lang.String
enquoteNCharLiteral(java.lang.String val)
boolean
equals(java.lang.Object other)
boolean
execute(java.lang.String sql)
boolean
execute(java.lang.String sql, int autoGeneratedKeys)
boolean
execute(java.lang.String sql, int[] columnIndexes)
boolean
execute(java.lang.String sql, java.lang.String[] columnNames)
int[]
executeBatch()
protected java.util.List<java.lang.Long>
executeBatchInternal()
protected boolean
executeImpl(java.lang.String sql)
Internal implementation ofexecute(String)
, so it can be used for normal queries and for queries returning generated keys.long[]
executeLargeBatch()
long
executeLargeUpdate(java.lang.String sql)
long
executeLargeUpdate(java.lang.String sql, int autoGeneratedKeys)
long
executeLargeUpdate(java.lang.String sql, int[] columnIndexes)
long
executeLargeUpdate(java.lang.String sql, java.lang.String[] columnNames)
java.sql.ResultSet
executeQuery(java.lang.String sql)
int
executeUpdate(java.lang.String sql)
int
executeUpdate(java.lang.String sql, int autoGeneratedKeys)
int
executeUpdate(java.lang.String sql, int[] columnIndexes)
int
executeUpdate(java.lang.String sql, java.lang.String[] columnNames)
protected void
finalize()
void
forgetResultSet()
java.sql.Connection
getConnection()
java.sql.ResultSet
getCurrentResultSet()
Get current result set.int
getDeletedRowsCount()
Get number of deleted rows.int
getFetchDirection()
int
getFetchSize()
java.sql.ResultSet
getGeneratedKeys()
int
getInsertedRowsCount()
Get number of inserted rows.long
getLargeMaxRows()
long
getLargeUpdateCount()
java.lang.String
getLastExecutionPlan()
Get execution plan for the last executed statement.java.lang.String
getLastExplainedExecutionPlan()
Get detailed execution plan for the last executed statement.int
getLocalStatementId()
The local statement id is intended to identify the statement for internal implementation purposes.int
getMaxFieldSize()
int
getMaxRows()
boolean
getMoreResults()
boolean
getMoreResults(int mode)
int
getQueryTimeout()
java.sql.ResultSet
getResultSet()
java.sql.ResultSet
getResultSet(boolean metaDataQuery)
int
getResultSetConcurrency()
int
getResultSetHoldability()
int
getResultSetType()
java.lang.Object
getSynchronizationObject()
Get synchronization object.int
getUpdateCount()
int
getUpdatedRowsCount()
Get number of updated rows.java.sql.SQLWarning
getWarnings()
int
hashCode()
boolean
hasOpenResultSet()
Check if this statement has open result set.protected boolean
internalExecute(java.lang.String sql)
boolean
isClosed()
boolean
isCloseOnCompletion()
protected boolean
isExecuteProcedureStatement(java.lang.String sql)
This method checks if supplied statement is executing procedure or it is generic statement.protected boolean
isGeneratedKeyQuery()
boolean
isPoolable()
boolean
isSimpleIdentifier(java.lang.String identifier)
boolean
isValid()
Check if this statement is valid.boolean
isWrapperFor(java.lang.Class<?> iface)
protected java.lang.String
nativeSQL(java.lang.String sql)
protected void
notifyStatementCompleted()
protected void
notifyStatementCompleted(boolean success)
protected void
notifyStatementStarted()
protected void
notifyStatementStarted(boolean closeResultSet)
protected void
prepareFixedStatement(java.lang.String sql)
protected FbStatement
requireStatement()
void
setCursorName(java.lang.String name)
void
setEscapeProcessing(boolean enable)
void
setFetchDirection(int direction)
void
setFetchSize(int rows)
void
setLargeMaxRows(long max)
void
setMaxFieldSize(int max)
void
setMaxRows(int max)
void
setPoolable(boolean poolable)
void
setQueryTimeout(int seconds)
protected int[]
toArray(java.util.Collection<java.lang.Long> updateCounts)
Convert collection ofLong
update counts into array of int.protected long[]
toLargeArray(java.util.Collection<java.lang.Long> updateCounts)
Convert collection ofInteger
update counts into array of int.<T> T
unwrap(java.lang.Class<T> iface)
-
-
-
Field Detail
-
jdbcVersionSupport
protected static final JdbcVersionSupport jdbcVersionSupport
-
gdsHelper
protected final GDSHelper gdsHelper
-
statementListener
protected final FBObjectListener.StatementListener statementListener
-
fbStatement
protected FbStatement fbStatement
-
completed
protected boolean completed
-
firstWarning
protected java.sql.SQLWarning firstWarning
-
currentStatementResult
protected FBStatement.StatementResult currentStatementResult
-
isSingletonResult
protected boolean isSingletonResult
-
specialResult
protected final java.util.List<RowValue> specialResult
-
maxRows
protected int maxRows
-
fetchSize
protected int fetchSize
-
connection
protected final FBConnection connection
-
-
Constructor Detail
-
FBStatement
protected FBStatement(GDSHelper c, int rsType, int rsConcurrency, int rsHoldability, FBObjectListener.StatementListener statementListener) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
-
Method Detail
-
isValid
public boolean isValid()
Description copied from interface:FirebirdStatement
Check if this statement is valid.- Specified by:
isValid
in interfaceFirebirdStatement
- Returns:
true
if statement is valid and can be used to execute SQL.
-
getSynchronizationObject
public final java.lang.Object getSynchronizationObject()
Description copied from interface:Synchronizable
Get synchronization object.- Specified by:
getSynchronizationObject
in interfaceSynchronizable
- Returns:
- object, cannot be
null
.
-
finalize
protected void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
completeStatement
public void completeStatement() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
completeStatement
public void completeStatement(CompletionReason reason) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
executeQuery
public java.sql.ResultSet executeQuery(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeQuery
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
notifyStatementStarted
protected void notifyStatementStarted() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
notifyStatementStarted
protected void notifyStatementStarted(boolean closeResultSet) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
notifyStatementCompleted
protected void notifyStatementCompleted() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
notifyStatementCompleted
protected void notifyStatementCompleted(boolean success) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getGeneratedKeys
public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException
- Specified by:
getGeneratedKeys
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
close
public void close() throws java.sql.SQLException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
isClosed
public boolean isClosed()
- Specified by:
isClosed
in interfacejava.sql.Statement
-
getMaxFieldSize
public int getMaxFieldSize() throws java.sql.SQLException
- Specified by:
getMaxFieldSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setMaxFieldSize
public void setMaxFieldSize(int max) throws java.sql.SQLException
- Specified by:
setMaxFieldSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getMaxRows
public int getMaxRows() throws java.sql.SQLException
- Specified by:
getMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setMaxRows
public void setMaxRows(int max) throws java.sql.SQLException
- Specified by:
setMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setEscapeProcessing
public void setEscapeProcessing(boolean enable) throws java.sql.SQLException
- Specified by:
setEscapeProcessing
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getQueryTimeout
public int getQueryTimeout() throws java.sql.SQLException
Firebird 4 and higher also support attachment level and global statement timeouts. This method only reports the value explicitly configured for this statement. In practice, a more stringent timeout might be applied by this attachment level or global statement timeout.
- Specified by:
getQueryTimeout
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- See Also:
setQueryTimeout(int)
-
setQueryTimeout
public void setQueryTimeout(int seconds) throws java.sql.SQLException
Query timeout is only supported on Firebird 4 and higher, and only for the pure-java wire protocol implementation. For earlier versions or native/embedded connections, the timeout is ignored. The maximum timeout for Firebird 4 is 4294967 seconds, higher values will be handled as if 0 was set. Firebird 4 also has attachment level and global statement timeouts. This configuration governs the statement level statement timeout only. In practice, a more stringent timeout might be applied by this attachment level or global statement timeout.
Important: Query timeouts in Firebird 4 and higher have an important caveat: for result set producing statements, the timeout covers the time from execution start until the cursor is closed. This includes the time that Firebird waits for your application to fetch more rows. This means that if you execute a
SELECT
and take your time processing the results, the statement may be cancelled even when Firebird itself returns rows quickly.A query timeout is not applied for execution of DDL.
- Specified by:
setQueryTimeout
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
cancel
public void cancel() throws java.sql.SQLException
- Specified by:
cancel
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getWarnings
public java.sql.SQLWarning getWarnings() throws java.sql.SQLException
- Specified by:
getWarnings
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
clearWarnings
public void clearWarnings() throws java.sql.SQLException
- Specified by:
clearWarnings
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setCursorName
public void setCursorName(java.lang.String name) throws java.sql.SQLException
- Specified by:
setCursorName
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeImpl
protected boolean executeImpl(java.lang.String sql) throws java.sql.SQLException
Internal implementation ofexecute(String)
, so it can be used for normal queries and for queries returning generated keys.- Throws:
java.sql.SQLException
- See Also:
execute(String)
-
getResultSet
public java.sql.ResultSet getResultSet() throws java.sql.SQLException
- Specified by:
getResultSet
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSet
public java.sql.ResultSet getResultSet(boolean metaDataQuery) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
createSpecialResultSet
protected FBResultSet createSpecialResultSet(FBObjectListener.ResultSetListener resultSetListener) throws java.sql.SQLException
Create the result set forspecialResult
.Should only be called from
getResultSet(boolean)
. This exists becauseFBCallableStatement
needs to create the result set in a slightly different way to account for the fact that the blobs were already cached earlier.- Parameters:
resultSetListener
- result set listener (can benull
)- Returns:
- result set wrapping
specialResult
- Throws:
java.sql.SQLException
-
hasOpenResultSet
public boolean hasOpenResultSet()
Description copied from interface:FirebirdStatement
Check if this statement has open result set. Note, this method works correctly if auto-commit is disabled. In auto-commit mode it will always returnfalse
because from the statement's point of view result set is not open (in auto-commit mode complete result set is fetched and cached in wrapping object before returning from theStatement.getResultSet()
method).- Specified by:
hasOpenResultSet
in interfaceFirebirdStatement
- Returns:
true
if there's already open result set associated with this statement, otherwisefalse
.
-
getUpdateCount
public int getUpdateCount() throws java.sql.SQLException
- Specified by:
getUpdateCount
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getDeletedRowsCount
public int getDeletedRowsCount() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get number of deleted rows. You can call this method multiple times, it does not affect the JDBC result number.- Specified by:
getDeletedRowsCount
in interfaceFirebirdStatement
- Returns:
- number of deleted rows or -1 if current result is result set.
- Throws:
java.sql.SQLException
- if database error occurs.
-
getInsertedRowsCount
public int getInsertedRowsCount() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get number of inserted rows. You can call this method multiple times, it does not affect the JDBC result number.- Specified by:
getInsertedRowsCount
in interfaceFirebirdStatement
- Returns:
- number of inserted rows or -1 if current result is result set.
- Throws:
java.sql.SQLException
- if database error occurs.
-
getUpdatedRowsCount
public int getUpdatedRowsCount() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get number of updated rows. You can call this method multiple times, it does not affect the JDBC result number.- Specified by:
getUpdatedRowsCount
in interfaceFirebirdStatement
- Returns:
- number of updated rows or -1 if current result is result set.
- Throws:
java.sql.SQLException
- if database error occurs.
-
getMoreResults
public boolean getMoreResults() throws java.sql.SQLException
- Specified by:
getMoreResults
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getMoreResults
public boolean getMoreResults(int mode) throws java.sql.SQLException
- Specified by:
getMoreResults
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setFetchDirection
public void setFetchDirection(int direction) throws java.sql.SQLException
- Specified by:
setFetchDirection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getFetchDirection
public int getFetchDirection() throws java.sql.SQLException
- Specified by:
getFetchDirection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setFetchSize
public void setFetchSize(int rows) throws java.sql.SQLException
- Specified by:
setFetchSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getFetchSize
public int getFetchSize() throws java.sql.SQLException
- Specified by:
getFetchSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetConcurrency
public int getResultSetConcurrency() throws java.sql.SQLException
- Specified by:
getResultSetConcurrency
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetType
public int getResultSetType() throws java.sql.SQLException
- Specified by:
getResultSetType
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetHoldability
public int getResultSetHoldability() throws java.sql.SQLException
- Specified by:
getResultSetHoldability
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
addBatch
public void addBatch(java.lang.String sql) throws java.sql.SQLException
- Specified by:
addBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
clearBatch
public void clearBatch() throws java.sql.SQLException
- Specified by:
clearBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeBatch
public final int[] executeBatch() throws java.sql.SQLException
- Specified by:
executeBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeBatchInternal
protected java.util.List<java.lang.Long> executeBatchInternal() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
toArray
protected int[] toArray(java.util.Collection<java.lang.Long> updateCounts)
Convert collection ofLong
update counts into array of int.- Parameters:
updateCounts
- collection of integer elements.- Returns:
- array of int.
-
toLargeArray
protected long[] toLargeArray(java.util.Collection<java.lang.Long> updateCounts)
Convert collection ofInteger
update counts into array of int.- Parameters:
updateCounts
- collection of integer elements.- Returns:
- array of int.
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLException
- Specified by:
getConnection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
forgetResultSet
public void forgetResultSet()
-
getCurrentResultSet
public java.sql.ResultSet getCurrentResultSet() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get current result set. Behaviour of this method is similar to the behavior of theStatement.getResultSet()
, except that this method can be called as much as you like.- Specified by:
getCurrentResultSet
in interfaceFirebirdStatement
- Returns:
- instance of
ResultSet
representing current result set ornull
if it is not available. - Throws:
java.sql.SQLException
- if database access error happened.
-
isPoolable
public boolean isPoolable() throws java.sql.SQLException
- Specified by:
isPoolable
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setPoolable
public void setPoolable(boolean poolable) throws java.sql.SQLException
- Specified by:
setPoolable
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
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
-
closeOnCompletion
public void closeOnCompletion()
- Specified by:
closeOnCompletion
in interfacejava.sql.Statement
-
isCloseOnCompletion
public boolean isCloseOnCompletion()
- Specified by:
isCloseOnCompletion
in interfacejava.sql.Statement
-
isExecuteProcedureStatement
protected boolean isExecuteProcedureStatement(java.lang.String sql) throws java.sql.SQLException
This method checks if supplied statement is executing procedure or it is generic statement. This check is needed to handle correctly parameters that are returned from non-selectable procedures.- Parameters:
sql
- SQL statement to check- Returns:
true
if supplied statement is EXECUTE PROCEDURE type of statement.- Throws:
java.sql.SQLException
- if translating statement into native code failed.
-
internalExecute
protected boolean internalExecute(java.lang.String sql) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
prepareFixedStatement
protected void prepareFixedStatement(java.lang.String sql) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
requireStatement
protected FbStatement requireStatement() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
addWarning
protected void addWarning(java.sql.SQLWarning warning)
-
nativeSQL
protected java.lang.String nativeSQL(java.lang.String sql) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
isGeneratedKeyQuery
protected boolean isGeneratedKeyQuery()
- Returns:
true
when the current statement is expected to return generated keys,false
otherwise.
-
getLastExecutionPlan
public java.lang.String getLastExecutionPlan() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get execution plan for the last executed statement. Unlike theFirebirdPreparedStatement.getExecutionPlan()
, this method can be called only after executing a query or update statement.- Specified by:
getLastExecutionPlan
in interfaceFirebirdStatement
- Returns:
- execution plan returned by the server.
- Throws:
java.sql.SQLException
- if no statement was executed before calling this method, statement is not valid, or there was an error when obtaining the execution plan.
-
getLastExplainedExecutionPlan
public java.lang.String getLastExplainedExecutionPlan() throws java.sql.SQLException
Description copied from interface:FirebirdStatement
Get detailed execution plan for the last executed statement. More structured and comprehensible form. Can be called only after executing a query or update statement.- Specified by:
getLastExplainedExecutionPlan
in interfaceFirebirdStatement
- Returns:
- detailed execution plan returned by the server.
- Throws:
java.sql.SQLException
- if no statement was executed before calling this method, statement is not valid, or there was an error when obtaining the execution plan.
-
checkValidity
protected void checkValidity() throws java.sql.SQLException
Check if this statement is valid. This method should be invoked before executing any action which requires a valid connection.- Throws:
java.sql.SQLException
- if this Statement has been closed and cannot be used anymore.
-
getLargeUpdateCount
public long getLargeUpdateCount() throws java.sql.SQLException
- Specified by:
getLargeUpdateCount
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setLargeMaxRows
public void setLargeMaxRows(long max) throws java.sql.SQLException
Jaybird does not support maxRows exceeding
Integer.MAX_VALUE
, if a larger value is set, Jaybird will add a warning to the statement and reset the maximum to 0.- Specified by:
setLargeMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getLargeMaxRows
public long getLargeMaxRows() throws java.sql.SQLException
Jaybird does not support maxRows exceeding
Integer.MAX_VALUE
, the return value of this method is the same asgetMaxRows()
.- Specified by:
getLargeMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeBatch
public final long[] executeLargeBatch() throws java.sql.SQLException
- Specified by:
executeLargeBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeUpdate
public final long executeLargeUpdate(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeUpdate
public final long executeLargeUpdate(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeUpdate
public final long executeLargeUpdate(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeUpdate
public final long executeLargeUpdate(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
enquoteLiteral
public java.lang.String enquoteLiteral(java.lang.String val) throws java.sql.SQLException
Returns aString
enclosed in single quotes. Any occurrence of a single quote within the string will be replaced by two single quotes.For a dialect 3 database, this will behave exactly like the JDBC 4.3 default implementation. For a dialect 1 database this will quote literals with double quotes and escape double quotes by doubling.
- Specified by:
enquoteLiteral
in interfacejava.sql.Statement
- Parameters:
val
- a character string- Returns:
- A string enclosed by single quotes with every single quote converted to two single quotes
- Throws:
java.lang.NullPointerException
- if val isnull
java.sql.SQLException
- if a database access error occurs
-
enquoteNCharLiteral
public java.lang.String enquoteNCharLiteral(java.lang.String val) throws java.sql.SQLException
- Specified by:
enquoteNCharLiteral
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- See Also:
enquoteLiteral(String)
-
enquoteIdentifier
public java.lang.String enquoteIdentifier(java.lang.String identifier, boolean alwaysQuote) throws java.sql.SQLException
Returns a SQL identifier. Ifidentifier
is a simple SQL identifier:- Return the original value if
alwaysQuote
isfalse
- Return a delimited identifier if
alwaysQuote
istrue
- Specified by:
enquoteIdentifier
in interfacejava.sql.Statement
- Parameters:
identifier
- a SQL identifieralwaysQuote
- indicates if a simple SQL identifier should be returned as a quoted identifier- Returns:
- A simple SQL identifier or a delimited identifier
- Throws:
java.sql.SQLException
- if identifier is not a valid identifierjava.sql.SQLFeatureNotSupportedException
- if the datasource does not support delimited identifiers (ie: a dialect 1 database)java.lang.NullPointerException
- if identifier isnull
- Return the original value if
-
isSimpleIdentifier
public boolean isSimpleIdentifier(java.lang.String identifier) throws java.sql.SQLException
- Specified by:
isSimpleIdentifier
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getLocalStatementId
public final int getLocalStatementId()
Description copied from interface:FirebirdStatement
The local statement id is intended to identify the statement for internal implementation purposes.NOTE: This method is only included in this interface to try and avoid problems with proxied and bytecode enhanced classes in certain libraries, you should normally have no reason to call this method directly.
The id is expected - but not guaranteed - to be unique for a single connection, and - preferably - for the entire JVM run time as well.
- Specified by:
getLocalStatementId
in interfaceFirebirdStatement
- Returns:
- The local statement id.
-
hashCode
public final int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public final boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
createStatementListener
protected StatementListener createStatementListener()
Creates theStatementListener
to be associated with the instance ofFbStatement
created for thisFBStatement
or subclasses.- Returns:
- instance of
StatementListener
-
-