JDBC介绍(七)

ResultSetCursor

在上几节建立Statement或PreparedStatement所使用的是Connection无参数的createStatement()和preparedStatement(),这样取得的Statement其执行SQL后得到的ResultSet只能使用next()方法来取得查询结果.

你可以在建立Statement组件时指定resultSet Type,可指定的参数有ResultSet.TYPE_FORWARD_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE与ResultSet.TYPE_SCROLL_SENSITIVE,在不指定的情况下,默认为第一个.也就是只能使用next()来存取记录,ResultSet 控制一个指向当前数据行的游标。初始,游标定位于第一行之前。用 'next' 方法可把游标移到下一行。 指定第二条或第三条,则可以使用ResultSet的afterLast(),previous(),absolute(),relative()等方法.
ResultSet.TYPE_SCROLL_INSENSITIVE与ResultSet.TYPE_SCROLL_SENSITIVE的差别在于能否取得ResultSet改变值后的资料,另外我们还必须指定resultSetConcurrency,有ResultSet.CONCUR_READ_ONLY与ResultSet.CONCUR_UPDATABLE两个参数可以设置,前者只能读取ResultSet的资料,后者表示可以直接使用ResultSet来操作数据库.
createStatement()不给定参数时,默认是ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY.
下面示例说明如何控制ResultSet的读取游标,在建立Statement时,使用ResultSet.TYPE_SCROLL_INSENSITIVE及ResultSet.CONCUR_READ_ONLY即可.
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet result=stmt.executeQuery("SELECT * FROM message");
result.afterLast(); //将ResultSet的读取游标移动到最后一条记录之后
while(result.previous()){
           System.out.println(result.getString("name" )+"/t");
          System.out.print(result.getString("email") + "/t");
         System.out.print(result.getString("subject") + "/t");
         System.out.print(result.getString("time") + "/t");
         System.out.println(result.getString("memo") + "/t");
}
stmt.close();
conn.close();

也可以使用absolute()方法指定查询到的记录的位置.absolute(-1),如果有100条结果记录,这代表最后一条记录.
beforeFirst(),将游标移至第一条记录之前,first()移动到第一条记录,last()移动到最后一条记录.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值