ResultSet接口
•Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。[示图ResultSet]
•ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:
• 获取任意类型的数据
• getObject(int index)
• getObject(string columnName)
•获取指定类型的数据,例如:
• getString(int index)
• getString(String columnName)
• 提问:数据库中列的类型是varchar2,获取该列的数据调用什么方法?Int类型呢?bigInt类型呢?Boolean类型?(详见后ppt)
•ResultSet还提供了对结果集进行滚动的方法:
• next():移动到下一行
• Previous():移动到前一行
• absolute(int row):移动到指定行 [row从1开始计算]
• beforeFirst():移动resultSet的最前面。
• afterLast() :移动到resultSet的最后面。
u ResultSet 的说明
在默认情况下,我们的rs结果集,只能向前移动,这样rs 结果就不能复用 ,如果希望复用,则可以这样做:
//通过java 来查询所有的雇员.
//假设我们希望rs结果,可以滚动(可以向前,亦可向后)
ResultSet 的可选项有:
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE 之一
resultSetConcurrency - 并发类型;它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一
ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger"); // 假设我们希望rs 结果,可以滚动(可以向前,也可以向后) // statement=ct.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, // ResultSet.CONCUR_READ_ONLY); rs = statement.executeQuery("select * from emp"); while (rs.next()) { System.out.println(rs.getString("ename")); } System.out.println("*************"); rs.beforeFirst(); while (rs.next()) { System.out.println(rs.getString("ename")); }