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 里面究竟有没有记录呢?? 展开
查了java api,java.sql.ResultSet 里面竟然没有一个方法是得到记录数的,只有getRow()得到当前行数。
尝试奇葩点用 previour() absolute(0) 这类方法绕过解决……但是不行,
会报出 SQLServerException: 只进结果集不支持请求的操作。
何谓“只进结果集”??我靠,第一次听说。
在循环做next()方法得到每一行记录之前,能不能查询到 ResultSet 里面究竟有没有记录呢?? 展开
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);
}
}
}
}
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只提供接口,不一定有实现的方法,和具体驱动有关。
展开全部
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from mytable");
if(rs.next()){
有数据
}else{
无记录
}
ResultSet rs=stmt.executeQuery("select * from mytable");
if(rs.next()){
有数据
}else{
无记录
}
追问
我是要next()之前查询有没有记录,并且有多少行,谢谢。
查询得到的是只进结果集~ 有数据的话,你就已经进了一行了,大哥~ previour() 没法用,我说了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询