java.sql.Statement
java.sql.Statement是SQL语句接口。
| 
       方法名  | 
     
       返回值类型  | 
     
       支持JDBC4  | 
     
       支持计划外ALT  | 
    
|---|---|---|---|
| 
       addBatch(String sql)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       clearBatch()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       clearWarnings()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       close()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       closeOnCompletion()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       execute(String sql)  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       execute(String sql, int autoGeneratedKeys)  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       execute(String sql, int[] columnIndexes)  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       execute(String sql, String[] columnNames)  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeBatch()  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeQuery(String sql)  | 
     
       ResultSet  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeUpdate(String sql)  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeUpdate(String sql, int autoGeneratedKeys)  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeUpdate(String sql, int[] columnIndexes)  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeUpdate(String sql, String[] columnNames)  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getConnection()  | 
     
       Connection  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getFetchDirection()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getFetchSize()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getGeneratedKeys()  | 
     
       ResultSet  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getMaxFieldSize()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getMaxRows()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getMoreResults()  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getMoreResults(int current)  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getResultSet()  | 
     
       ResultSet  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getResultSetConcurrency()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getResultSetHoldability()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getResultSetType()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getQueryTimeout()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getUpdateCount()  | 
     
       int  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       getWarnings()  | 
     
       SQLWarning  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       isClosed()  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       isCloseOnCompletion()  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       isPoolable()  | 
     
       boolean  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setCursorName(String name)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setEscapeProcessing(boolean enable)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setFetchDirection(int direction)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setMaxFieldSize(int max)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setMaxRows(int max)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setPoolable(boolean poolable)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setQueryTimeout(int seconds)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       setFetchSize(int rows)  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       cancel()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
| 
       executeLargeUpdate(String sql)  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       getLargeUpdateCount()  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       executeLargeBatch()  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       executeLargeUpdate(String sql, int autoGeneratedKeys)  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       executeLargeUpdate(String sql, int[] columnIndexes)  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       executeLargeUpdate(String sql, String[] columnNames)  | 
     
       long  | 
     
       No  | 
     
       Yes  | 
    
| 
       enableStreamingResults()  | 
     
       void  | 
     
       Yes  | 
     
       Yes  | 
    
 
  - 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,但会有性能损耗。
 - 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。
 - LargeUpdate相关方法必须在JDBC4.2及以上版本使用。
 - enableStreamingResults()是开启流式读的一个自定义接口,该接口间接调用setFetchSize(Integer.MIN_VALUE)。若要开启流式读功能,需要将url中的enableStreamingQuery设置为true,同时调用setFetchSize(Integer.MIN_VALUE)或者enableStreamingResults()。除开启流式读功能外,setFetchSize()的入参只能为正数或者0。
 - 当提交模式为autocommit时,执行executeBatch前如果驱动JDBC侧将 batchMode设置为OFF,executeBatch会将整个batch展开为单独事务执行,等同于批量语句内部包含commit或者abort,执行后不支持ALT重放。