当前页面: 开发资料首页 → JSP 专题 → 困扰我很久的问题,结果集里的循环问题?用JSP的请近来看看?
困扰我很久的问题,结果集里的循环问题?用JSP的请近来看看?
摘要: 困扰我很久的问题,结果集里的循环问题?用JSP的请近来看看?
String sql="select A from B where c=c";
ResultSet rs=db.executeQuery(sql);
if(!rs.next()){
out.println("没有数据");
}else{
while(rs.next()){
out.println(""+rs.getString("A")+"");
}
}如果结果集里没有数据,就打印说没有数据,如果有就让他们循环都打印出来,可是我这样写,也可以把数据提取出来,没有了也可以提示,但是,如果有数据,且数据是6个的话,就只能打印出来是5个,如果不要if(!rs.next()){
out.println("没有数据");
}else{}的这个判断,就可以打印出来全部,但是我不知道是那里错误,有那位朋友遇到过类似的问题,可以帮我解决一下吗?谢谢了,也可以换种方法, 只要能解决问题,不胜感激!
想一下next()的用法!!!
if(!rs.next()){
out.println("没有数据");
}else{
do{
out.println(""+rs.getString("A")+"");
}while(rs.next());
}
if(!rs.next()){
这句话不能这样写!如果有数据的话你这句话就已经把数据集下移了一条!
可是我想如果没有数据的时候要提示,我要怎么写这句话,让他们有数据的时候就显示出来,没有的时候就打印提示呢?谢谢了.
先得到记录数
int count = 0;
if (rs.next)
{
rs.last();
count=rs.getRow();
}
rs.beforeFirst();
//判断count
//是否循环
count=rs.getRow();
就眺用这一句不句可以判断有没有数据了!
import java.sql.ResultSetMetaData; //使用这个方法
ResultSet rs= null;
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
if(columnCount==0){
("没有数据");
}else{
}
晕,楼上的 rsmd.getColumnCount是列也就是字段数!
楼上的楼上直接用count=rs.getRow()得到的肯定是0,不信去试试!
2楼的正解
对头
if(rs.isBeforeFirst()){
while(rs.next()){
//...
}
}else{
System.out.println("没有数据");
}
不过看看http://blog.molihua.net/user1/1/archives/2006/557.html
rs.getRows()还是有点不好的
if(!rs.next())
如果有数据就会把数据集下移了一条!
应该用rs.movefirst;或者rs.beforeFirst();
dreamover(梦醒了〖http://hellfire.cn〗) ( ) 信誉:100 Blog 2006-09-12 11:00:00 得分: 0
if(rs.isBeforeFirst()){
while(rs.next()){
//...
}
}else{
System.out.println("没有数据");
}
这个是不行的,无论有没有数据都会输出"没有数据"
wiseboyloves你脑子有问题是不是,那是.NET的帖子!
人身攻击啊,但rs.getRows()是取不出来的,不信你试试
问:如何获得当前用的cursors的位置?
答:
int row = rs.getRow()就是当前指针行数,还有isFrist();isBeforeFist();isLast();isAfterLast();可以测试是不是在方法名所说的位置
按你那个取法当然取不出来了,回去好好看看书吧
rs.getRows()这样能取出来吗
你也看看书去吧
它取的是指针行数,就rs.getRows()你不说能取零吗,是啊,永远都是零,有没有数据也是零
呵呵 ResultSet有getRows方法吗!??
我再说一遍,按你那个取法当然取不出来了!
int count = 0;
if (rs.next)
{
rs.last();
count=rs.getRow();
}
你自己去试试,看看能不能取出来!
方法不对就说不行
这样是能了
晕,楼上的 rsmd.getColumnCount是列也就是字段数!
楼上的楼上直接用count=rs.getRow()得到的肯定是0,不信去试试!
可这两个方法能一样吗
if(rs.isBeforeFirst()){
while(rs.next()){
//...
}
}else{
System.out.println("没有数据");
}
好象可以取出来,我试了一下,目前是可以取出来,只是不知道在程序运行是有什么利弊关系?
按你这么做好象也没完成楼主要的啊
我说两个方法一样了吗???!!!
那我那个是能取出来的,而另一个取不出来,能一样吗
你取零有个屁用
我说一样了吗?取屁的是你,不是我,让你好好看书还不听
那我就问,我用那个方法能取出来不
晕,楼上的 rsmd.getColumnCount是列也就是字段数!
能还是不能
能啊,我说了,你直接取肯定是0,有错误吗?
如果有记录是0吗?
我有直接取吗?
count=rs.getRow();
就眺用这一句不句可以判断有没有数据了!
谁说的?
你看看那个贴子是我发的吗
String sql="select A from B where c=c";
ResultSet rs=db.executeQuery(sql);
if(!rs.next()){
out.println("没有数据");
}else{
rs.first();
while(rs.next()){
out.println(""+rs.getString("A")+"");
}
}
因为你已经查询到末尾,你需要指针指到第一条记录
郁闷!
String sql="select A from B where c=c";
ResultSet rs=db.executeQuery(sql);
if(rs.next())
{
do
{
out.println(""+rs.getString("A")+"");
}while(rs.next());
}
else
{
out.println("没有数据");
}
这样可以吗?虽然比较笨的办法
jianghao08(自由自在) ( ) 信誉:100 Blog 2006-9-12 10:43:24 得分: 2
先得到记录数
int count = 0;
if (rs.next)
{
rs.last();
count=rs.getRow();
}
rs.beforeFirst();
//判断count
//是否循环
jianghao08(自由自在)说的完全正确,只是你们没去看API,没看懂。
==============================
也可以这样做
boolean noRecord= false;
while(rs.next()){
out.println(""+rs.getString("A")+"");
noRecord= true;
}
if(noRecord){
out.println("没有数据");
}
一个flag就OK