Topic: 如何判断一个查询结果集resultset是否包含记录?

  Print this page

1.如何判断一个查询结果集resultset是否包含记录? Copy to clipboard
Posted by: ant21
Posted on: 2003-09-05 17:05

数据库是sql server 2000,jdbc是jtds。

我想要获得查询结果集resultset的行数,查了以前的帖子,用
rs.last();
rowNum = rs.getRow();
可是查询一个包含了23条记录的结果集,rowNum却是-3,也就是说当前光标定位在倒数第3行,反复试了几遍都是这样,我只好用rs.next()循环来获得rs的真实行数。

但我还需要判断一个rs是否包含有记录,如果是不包含任何记录的rs,我该通过怎样的方法得知呢?我用rs.next()肯定是不行了,因为指针无法移动,总是报错。

会不会是jdbc的问题?

各位有什么好的方法吗?

谢谢。

2.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: dog72
Posted on: 2003-09-05 17:17

一些driver不是JDBC2.0的实现,所以getRow可能会出错。
要想知道行数,用select count 来实现吧。

3.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: dwju
Posted on: 2003-09-05 17:50

我在通常情况下使用这样的方法!
例如以下代码:
resultset.first();
if(resultset.isAfterLast)
{
………………
}

4.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: ant21
Posted on: 2003-09-06 00:03

找遍各大论坛,终于找到答案了,其实判断结果集是否有记录很简单:
if (rs.next()) {"rs has data"}
else {"rs has NO data"}
我试过了,很管用。因为在刚刚得到rs的时候,它的指针是指在第一条记录之前的。

5.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: dog72
Posted on: 2003-09-08 09:30

ant21 wrote:
找遍各大论坛,终于找到答案了,其实判断结果集是否有记录很简单:
if (rs.next()) {"rs has data"}
else {"rs has NO data"}
我试过了,很管用。因为在刚刚得到rs的时候,它的指针是指在第一条记录之前的。


你不是想知道纪录的行数吗?难道仅仅是想知道有没有记录这么简单呀。

6.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: sc33
Posted on: 2003-09-08 21:30

再给你个窍门:

在你的查询sql变成:
String countSQL = “select countStart from (” + SQL + ")";
ResultSet rs = stmt.executeQuery(countSQL);
rs.next();
int num = rs.getInt(1); //num就是你的记录总数
这样你就不用老循环了!

7.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: jiwolf
Posted on: 2003-10-08 14:08

同意sc33,换种思路不是很好

8.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: yb79528
Posted on: 2003-10-08 14:18

可是有些时候"select count"不被数据库支持啊

9.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: wood
Posted on: 2003-10-08 14:51

ant21 wrote:
找遍各大论坛,终于找到答案了,其实判断结果集是否有记录很简单:
if (rs.next()) {"rs has data"}
else {"rs has NO data"}
我试过了,很管用。因为在刚刚得到rs的时候,它的指针是指在第一条记录之前的。

我遇到的情况是这样的:
while(rs.next()){
do sth;
}
if (rs.isAfterLast()) { // 如果是空记录集时,方法返回false
do sth;
}

10.Re:如何判断一个查询结果集resultset是否包含记录? [Re: ant21] Copy to clipboard
Posted by: emate
Posted on: 2003-10-08 16:12

wood兄的想法蛮有意思,不过isAfterLast()好像也是jdbc2.0的特性。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923