昨天好友朱凌问了我一个问题,怎样从ResultSet中读取行数?
我google了一下,发现目前最常用的做法如下:
但是我利用家里的环境试了一下,却发现不好用。仔细考虑一下:发现这个方法并不是很巧妙,因为在rs.last()之后还是需要把游标滚到开头。效率不是很高。
另外一种方式就是先
然后再
这样的问题是需要2次stmt,可能效率会受到影响。早晨,我想起了另外一种更为巧妙的解决方法,如下:
先建表:
然后随便向里面填几行输入。
然后再sqlplus中输入如下内容:
利用一个union操作把两个查询进行一个并操作。
完毕。
[color=red][size=large]另外:以上操作,我再mysql和oracle数据库进行过调试,没有问题,其他数据库运行情况不详[/size][/color]
我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]