
# 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       |
   
![](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标，然后分段处理，所以会加大数据库与客户端的通信量，会有性能损耗。
- 由于数据库游标是事务内有效，所以，在设置setFetchSize的同时，需要将连接设置为非自动提交模式，setAutoCommit(false)。同时在业务数据需要持久化到数据库中时，在连接上执行提交操作。
- LargeUpdate相关方法必须在JDBC4.2及以上版本使用。
 
