代码如下:
stmt = conn.createStatement();
sql2 = " select sldate,pfdate from biz_sys_comp where compid=2733";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
SLDATE = Util.filter(rs.getString("sldate"));
PFDATE = Util.filter(rs.getString("pfdate"));
compManager.setSLDATE(SLDATE);
compManager.setPFDATE(PFDATE);
vResult.add(compManager);
}
代码没有全部贴上来,只把关键的贴上了,
执行的时候,到ResultSet rs = stmt.executeQuery(sql);时,查看rs.next() = true
而执行到while(rs.next()){时,查看rs.next() = false,而这个sql语句有且只有一条记录
不知道为什么会出现这种情况?

解决方案 »

  1.   

    查看rs.next() = true你是不是跟踪调试了?rs.next(), 指向第一条数据 while(rs.next()) 指向第二条,此时没有第二条,当然就false了程序本身跑起来应该没有问题的,对于一条记录,不要两次调用next()方法
      

  2.   

    你的rs.next()执行后,指针就已经移动了一个条纪录
      

  3.   

    查看rs.next() 的时候rs已经移动了
      

  4.   

    2楼的,我有点不明白,我只调用了一次next()方法啊。为什么说调用了2次
      

  5.   

    不要查看rs.next() = true
      

  6.   

    主要问题是我现在数据取不出来,执行while(rs.next()){后直接就跳出来了
      

  7.   

    执行的时候,到ResultSet rs = stmt.executeQuery(sql);时,查看rs.next() = true
    而执行到while(rs.next()){时,查看rs.next() = false,说说你怎么查看的
      

  8.   

    所以说不要单步调试啊你肯定先查看了一下rs.next();这时游标已经指向第一条数据了再往下走,while(rs.next())的时候就没有数据了
      

  9.   

    每次执行rs.next方法时,都会使指针向下移动。String sql = "...";
    ResultSet rs = stmt.executeQuery(sql);
    // 此时指针:beforeFirst
    boolean canNext = rs.next();
    // 调用next(),指针向下移动。
    // 此时指针:first
    System.out.println("canNext = " + canNext);// 以下每调用一次,则指针向下移动一次
    while(rs.next()){
    ...
    }// 循环结束后,指针:afterLast
      

  10.   

    哦,是因为我调试的时候写了rs.next()的缘故,所以执行while(rs.next()){时候就为false了,谢谢楼上的
      

  11.   

    那还是程序的问题
    直接打印结果看看,先不要用你的Util类while(rs.next()){
    System.out.println(rs.getString("sldate"));
    System.out.println(rs.getString("pfdate"));}
      

  12.   

    sql2 = " select sldate,pfdate from biz_sys_comp where compid=2733";
    ResultSet rs = stmt.executeQuery(sql);你执行的是SQL是sql,而不是sql2,那么sql所指代的那条SQL在哪里??
    是不是要把变量sql换成sql2 ???