站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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





↑返回目录
前一篇: JSP问题 超急~~~~~~~~~~~~
后一篇: 求助!面中两个单选项的问题实现!