我觉得这样写可以,是不是本来就没有查询到数据?你在test类的构造函数中追踪一下,加一个System.out.println(rs),看看是不是也为False

解决方案 »

  1.   

    一般只要你不把Connection和Statement关了,是不会出问题的。
    除非你的ResultSet是空null的。
      

  2.   

    我跟踪过了,在构造函数里面是没问题的,但是在getInfo里面就有问题了,rs.next()为false
      

  3.   

    rs.next()为false说明rs不为null只是没有选取到合适的记录。
    你把sql打印出来到数据库里面去查询看看不就知道什么原因了?
      

  4.   

    当然是有记录的,
    我在构造函数中System.out.print(rs.next())打印出true,在getinfo中打印出false,第一次只在构造函数中打印,第二次只在getInfo中打印
    会不会跟赋值有什么关系
      

  5.   

    我早就已经试过了,sql是绝对正确的,我用rs.wasNull()就出现 内部错误: 数据存取的索引无效 
    这个错误是怎么引起的,大家知道吗
      

  6.   

    实际上程序如下,st我用了很多次
    public class test(){
        ResultSet rs = null;
        public test(int ID){
            .......
            rs = st.executeQuery("select .....")
            
            rs1 = st.executeQuery("select .....")
            ....
        }
        
        public ResultSet getInfo(){
            return rs;
        }
    }
    现在改为如下,就可以了,是Statement的原因,但是为什么呢
    public class test(){
        ResultSet rs = null;
        public test(int ID){
            .......
            rs = st1.executeQuery("select .....")
            
            rs1 = st.executeQuery("select .....")
            ....
        }
        
        public ResultSet getInfo(){
            return rs;
        }
    }
      

  7.   

    很简单,因为在打开rs1的时候把rs给关闭了。
      

  8.   

    很简单,他们的statement相同,在打开rs1的时候自动把rs给关闭了。相当于rs.close()