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):移动到指定行 [row1开始计算]

• 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"));
}