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及以上使用。