JDBC使用ResultSet遇到问题,什么是“只进结果集”??

我想知道ResultSet里面到底有没有结果记录(是否为0),做一个ifelse判断,然后给界面层不同的回复……查了javaapi,java.sql.ResultSet里... 我想知道ResultSet里面到底有没有结果记录(是否为0),做一个if else 判断,然后给界面层不同的回复……

查了java api,java.sql.ResultSet 里面竟然没有一个方法是得到记录数的,只有getRow()得到当前行数。

尝试奇葩点用 previour() absolute(0) 这类方法绕过解决……但是不行,

会报出 SQLServerException: 只进结果集不支持请求的操作。

何谓“只进结果集”??我靠,第一次听说。

在循环做next()方法得到每一行记录之前,能不能查询到 ResultSet 里面究竟有没有记录呢??
展开
 我来答
ThreeSoft
2013-04-02 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:61.2万
展开全部
ResultSet rs = *****;
ResultSetMetaData rt = rs.getMetaData();
//行集的列数
int max = rt.getColumnCount();
可以循环之前检查有记录,
if (rs.isBeforeFirst()) {
while (rs.next()) {

for (int i = 1; i <= max; i++) {
String strV = rs.getString(i);
}
}
}
}
追问
原来是用 isBeforeFirst() 判断有没有记录, 明白了谢谢

那什么叫“只进结果集”? previour() absolute() 之类的方法怎么用呢?
追答
只进结果集:只能从第一条读到最后一条,只前进,不能后退。
previour() 读前一条,absolute() 读指定偏移量的行,这里只进结果集都不支持。
jdbc驱动支持什么结果集,要看他的具体实现,和你的初始化定义,通用的jdbc只提供接口,不一定有实现的方法,和具体驱动有关。
daiyi19812012
2013-04-02 · TA获得超过158个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:112万
展开全部
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from mytable");
if(rs.next()){
有数据
}else{
无记录
}
追问
我是要next()之前查询有没有记录,并且有多少行,谢谢。

查询得到的是只进结果集~ 有数据的话,你就已经进了一行了,大哥~ previour() 没法用,我说了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式