whlie (rs.next)就可以判断是否为空
rs.first()不是jsp不支持,而是你的数据库提供的驱动不支持

解决方案 »

  1.   

    connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,                                      ResultSet.CONCUR_READ_ONLY);最初得到的rs的rs.next()为空则结果集为空,否则rs.beforeFirst()
      

  2.   

    我一直都用rs.next()来判断!
    还有如果rs.getMetaData().getClumnCount()==-1则结果集也为空!
    //rs.getMetaData().getClumnCount()结果集的记录数,等于-1则为空:)
      

  3.   

    用rs.next()判断是否为空的时候有问题啊!!!
    比如说我取出的结果集有3条记录,前两条的rs.next()判断为真,而的三条的rs.next()的判断则为false了。
    还有,请教一下数据库的驱动是指什么?我用的数据库是oracle9i
      

  4.   

    一般如果没有移动游标的话,它开始是指象第一条数据之前
    只要用if(rs.next())
        {
         }
    就可以了
    如果没有在第一条的话就要创建可滚动的数据集,把它移到第一条记录前
      

  5.   

    if(rs == null)
    {
        读取数据库错误
    }
    if(rs.size() == 0){
       表示没有找到相应的记录
    }
    if(rs.next)
    为false也表示为空
      

  6.   

    "一般如果没有移动游标的话,它开始是指象第一条数据之前"
    如果这是正确的话,则rs.next实际上指的就是当前记录
      

  7.   

    rs.next()指向下一个记录!但是对于第一个记录(如果存在)来说,它是没有所谓的“上一个记录”。
    通常都是使用rs.next()来判断结果集是否已经到末尾,通常有两种使用方式:
    1、if加while;
    2、while;
    对于1来说,通常用于在某个成员方法中调用另一个子方法(可以在子方法中执行循环)或执行别的操作,有如下逻辑:
    “若结果集不为空,则调用子方法或执行别的操作”。
    对于2来说,在一个成员方法中进行判断并操作,有如下逻辑:
    “若结果集未结束,则循环执行指定操作”。注:必须注意使用if判断完后,实际rs的游标(虽然java中没有指针的概念,但是这里使用指针更利于理解)已经移动一位!此后不能使用while,而应该使用do while,否则就会缺少一个记录。
      

  8.   

    to biscuit50 (饼干) :
    对于你说的
    “当结果集非空时做一些处理,用whlie (rs.next)判断的时候,最后一条记录虽然得到,但它的next为空。”
    既然你是在“结果集非空时作一些处理”,那么使用while足够了,至于“它的next为空”就不用再考虑了。
    如果你是想在结果集为空时做一些处理,那么先使用if判断然后使用do while即可。
    一个简单的使用if判断的算法:
    if(!rs.next())
    {
        //结果集为空
        //执行某操作
    }
    else
    {
        //不为空
        do
        {    
            //循环执行某操作
        }
    }
      

  9.   

    晕阿,少写了个while,更正一下:
    if(!rs.next())
    {
        //结果集为空
        //执行某操作
    }
    else
    {
        //不为空
        do
        {    
            //循环执行某操作
        }while(rs.next());
    }