解决ResultSet中无法获取行数的问题

昨天好友朱凌问了我一个问题,怎样从ResultSet中读取行数?
我google了一下,发现目前最常用的做法如下:

Connection conn = DriverManager.getConnection("...");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

ResultSet rs = conn.prepareStatement("select ...").executeQuery();

rs.last();
rs.getRow();

但是我利用家里的环境试了一下,却发现不好用。仔细考虑一下:发现这个方法并不是很巧妙,因为在rs.last()之后还是需要把游标滚到开头。效率不是很高。
另外一种方式就是先

select count(*) from ...

然后再

select ...

这样的问题是需要2次stmt,可能效率会受到影响。早晨,我想起了另外一种更为巧妙的解决方法,如下:
先建表:

create table try(
try_id integer,
try_name varchar2(10)
);

然后随便向里面填几行输入。
然后再sqlplus中输入如下内容:

select count(*), 'head' from try
union all
select try_id, try_name from try

利用一个union操作把两个查询进行一个并操作。
完毕。


[color=red][size=large]另外:以上操作,我再mysql和oracle数据库进行过调试,没有问题,其他数据库运行情况不详[/size][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值