java.sql.Statement
java.sql.Statement是SQL语句接口。
表 1 对java.sql.Statement的支持情况
方法名
|
返回值类型
|
支持JDBC 4
|
addBatch(String sql)
|
void
|
Yes
|
clearBatch()
|
void
|
Yes
|
clearWarnings()
|
void
|
Yes
|
close()
|
void
|
Yes
|
closeOnCompletion()
|
void
|
Yes
|
execute(String sql)
|
Boolean
|
Yes
|
execute(String sql, int autoGeneratedKeys)
|
Boolean
|
Yes
|
execute(String sql, int[] columnIndexes)
|
Boolean
|
Yes
|
execute(String sql, String[] columnNames)
|
Boolean
|
Yes
|
executeBatch()
|
Boolean
|
Yes
|
executeQuery(String sql)
|
ResultSet
|
Yes
|
executeUpdate(String sql)
|
int
|
Yes
|
executeUpdate(String sql, int autoGeneratedKeys)
|
int
|
Yes
|
executeUpdate(String sql, int[] columnIndexes)
|
int
|
Yes
|
executeUpdate(String sql, String[] columnNames)
|
int
|
Yes
|
getConnection()
|
Connection
|
Yes
|
getFetchDirection()
|
int
|
Yes
|
getFetchSize()
|
int
|
Yes
|
getGeneratedKeys()
|
ResultSet
|
Yes
|
getMaxFieldSize()
|
int
|
Yes
|
getMaxRows()
|
int
|
Yes
|
getMoreResults()
|
boolean
|
Yes
|
getMoreResults(int current)
|
boolean
|
Yes
|
getResultSet()
|
ResultSet
|
Yes
|
getResultSetConcurrency()
|
int
|
Yes
|
getResultSetHoldability()
|
int
|
Yes
|
getResultSetType()
|
int
|
Yes
|
getQueryTimeout()
|
int
|
Yes
|
getUpdateCount()
|
int
|
Yes
|
getWarnings()
|
SQLWarning
|
Yes
|
isClosed()
|
Boolean
|
Yes
|
isCloseOnCompletion()
|
Boolean
|
Yes
|
isPoolable()
|
Boolean
|
Yes
|
setCursorName(String name)
|
void
|
Yes
|
setEscapeProcessing(boolean enable)
|
void
|
Yes
|
setFetchDirection(int direction)
|
void
|
Yes
|
setMaxFieldSize(int max)
|
void
|
Yes
|
setMaxRows(int max)
|
void
|
Yes
|
setPoolable(boolean poolable)
|
void
|
Yes
|
setQueryTimeout(int seconds)
|
void
|
Yes
|
setFetchSize(int rows)
|
void
|
Yes
|
cancel()
|
void
|
Yes
|
executeLargeUpdate(String sql)
|
long
|
No
|
getLargeUpdateCount()
|
long
|
No
|
executeLargeBatch()
|
long
|
No
|
executeLargeUpdate(String sql, int autoGeneratedKeys)
|
long
|
No
|
executeLargeUpdate(String sql, int[] columnIndexes)
|
long
|
No
|
executeLargeUpdate(String sql, String[] columnNames)
|
long
|
No
|
说明:
通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。
由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。
LargeUpdate相关方法必须在JDBC4.2及以上使用。