注意:Java的ResultSet对象,默认是不可更新的!...

        注意啊!Java的ResultSet对象,默认是不可更新的,仅有一个向前移动的指针,
因此,只能遍历它一次,并且只能按从第一行到最后一行的顺序进行。


如果需要ResultSet指针具有移动和可更新的特性,可以在使用createStatement()方法
获取Statement对象时指定一些参数。


//实例,获取ResultSet中含有的记录数量。


   在已获取ResultSet结果集的情况下,可以使用该对象的last()和getRow()方法取得
记录数量。


last()方法用于将指针指向最后一行记录。
getRow()方法用于返回当前指针所在的位置。


ResultSet默认情况下,只能使用next()方法向前逐行移动指针,不支持last()、first()、
以及absolute()等方法,如果要使用last()、absolute()等方法,必须在由Connection生成
Statement时指定相应的参数,格式如下:


Statement stmt =conn.ctrateStatement(游标类型,记录更新权限);


游标类型参数有以下几种:

ResultSet.TYPE_FORWORD_ONLY       //指针只可以向前移动

ResultSet.TYPE_SCORLL_INSENSITIVE //指针可滚动,但是不受其他用户
//对数据库更改的影响


ResultSet.TYPE_SCORLL_SENSITIVE //指针可滚动,当其它用户更改数据
//库时这个记录也会改变


记录更新权限有以下几种:


ResultSet.CONCUR_READ_ONLY //只读


ResultSet.CONCUR_UPDATABLE //可更新




createStatement()缺省参数等价于:


createStatement(ResultSet.TYPE_FORWORD_ONLY,ResultSet.CONCUR_READ_ONLY);




/


获取结果集ResultSet记录数量的代码如下:


//此处省略连接数据库的代码和变量的定义!...


Statement stmt =conn.createStatement(ResultSet.TYPE_SCOLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);


ResultSet rs =stmt.executeQuery("select * from Test");


if(rs.last()){
count =rs.getRow(); //返回当前指针所在的位置
}


System.out.println("记录数量为:"+count);


注:使用上述方法查询记录数量,在数据量很大时会出现内存溢出异常,因此不推荐使用。
要以使用SQL统计函数获取符合查询条件的记录数量,示例代码如下:


//此处省略连接数据库的代码和变量的定义!...

Statement stmt =conn.createStatement();


ResultSet rs   =stmt.executeQuery("select * from Test");


if(rs.next()){
count =rs.getInt(1); //注:此处假设数据库中第一列数据类型为:自动编号
}


System.out.println("记录数量为:"+count);




/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值