
# java.sql.Statement
java.sql.Statement是SQL语句接口。
表1对java.sql.Statement的支持情况 
| 方法名                          | 返回值类型      | 支持JDBC 4 |
|:---|:---|:---|
| close()                      | void       | Yes      |
| execute(String sql)          | boolean    | Yes      |
| executeQuery(String sql)     | ResultSet  | Yes      |
| executeUpdate(String sql)    | int        | Yes      |
| getConnection()              | Connection | Yes      |
| getResultSet()               | ResultSet  | Yes      |
| getQueryTimeout()            | int        | Yes      |
| getUpdateCount()             | int        | Yes      |
| isClosed()                   | boolean    | Yes      |
| setQueryTimeout(int seconds) | void       | Yes      |
| setFetchSize(int rows)       | void       | Yes      |
| cancel()                     | void       | Yes      |
   
![](https://support.huaweicloud.com/devg-fabric/public_sys-resources/note_3.0-zh-cn.png)
通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标，然后分段处理，所以会加大数据库与客户端的通信量，会有性能损耗。
由于数据库游标是事务内有效，所以，在设置setFetchSize的同时，需要将连接设置为非自动提交模式，setAutoCommit(false)。同时在业务数据需要持久化到数据库中时，在连接上执行提交操作。
