Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- 创建一个
Statement
对象,该对象将生成具有给定类型、并发性和可保存性的ResultSet
对象。此方法与上述createStatement
方法相同,但它允许重写默认结果集类型、并发性和可保存性。 - 参数:
resultSetType
- 以下ResultSet
常量之一:ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- 以下ResultSet
常量之一:ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- 以下ResultSet
常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
- 返回:
- 一个新的
Statement
对象,该对象将生成具有给定类型、并发性和可保存性的ResultSet
对象 - 抛出:
SQLException
- 如果发生数据库访问错误,在关闭的连接上调用此方法,或者给定参数不是指定类型、并发性和可保存性的ResultSet
常量SQLFeatureNotSupportedException
- 如果 JDBC 驱动程序不支持此方法,或者对于指定结果集类型、结果集可保存性和结果集并发性,此方法不受支持。我们的例子用的参数是:
ResultSet.TYPE_SCROLL_INSENSITIVE
对于滚动不敏感,说白了就是结果集可以随便滚。ResultSet.CONCUR_READ_ONLY
当并发访问这个结果集的时候,只能读取内容,不能改。1 package com.ayang.jdbc; 2 3 import java.sql.*; 4 5 public class TestScroll{ 6 public static void main(String[] args) { 7 8 try { 9 Class.forName("oracle.jdbc.driver.OracleDriver"); 10 String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL"; 11 Connection conn = DriverManager.getConnection(url,"scott","root"); 12 13 Statement stmt = conn.createStatement( 14 ResultSet.TYPE_SCROLL_INSENSITIVE, //结果集滚动不敏感 15 ResultSet.CONCUR_READ_ONLY); //并发访问结果集时,只读。 16 17 ResultSet rs = stmt.executeQuery("select * from emp order by sal"); 18 rs.next(); 19 System.out.println(rs.getString("ename")); 20 rs.last(); //定位到最后一行 21 System.out.println(rs.getString(1)); //打印第一列 22 System.out.println(rs.isLast()); //是否是最后一行,boolean 23 System.out.println(rs.isAfterLast()); //倒数第二行 24 System.out.println(rs.getRow()); //得到是第几行。 25 rs.previous(); 26 System.out.println(rs.getString(1)); 27 rs.absolute(6); //指定到第6行 28 System.out.println(rs.getString(1)); 29 rs.close(); 30 stmt.close(); 31 conn.close(); 32 33 } catch (ClassNotFoundException e) { 34 35 e.printStackTrace(); 36 } catch (SQLException e) { 37 38 e.printStackTrace(); 39 } 40 41 } 42 }