看程序片段:(程序没错)
          String sql="SELECT DISTINCT username from rightanswer";
         try{
           conn = DriverManager.getConnection(sConnStr, sqluser, sqlpassword);
           Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
           rs=stmt.executeQuery(sql);
           rs.next();
           while(!rs.isAfterLast())
           {
               username[i]=rs.getString("username");
               i++;              
               rs.next();
           }
我单步跟踪到WHILE之前,再一步一步运行,结果i=2;正确。
但我要是单步跟踪到WHILE已经结束的地方,一看i=9  这是怎么回事??单步跟踪和直接跳过竟然结果不一样。而且按理说String sql="SELECT DISTINCT username from rightanswer";
这个应该屏蔽了重复的 
当一步一步跟踪时,i=2,username结果为 iori和lovesky
但直接跳过的跟踪时,当i=9时,却发现username结果 有5个iori和4个lovesky
奇怪吧。不知道为什么,按理说,执行代码都一样,差别怎么就这么大呢?

解决方案 »

  1.   

    难道是楼主的幻觉?呵呵
    ---------
    这样看好像也看不出什么啊,难道你select出来的数据不一样?
      

  2.   

    呵呵好好检查下程序吧把
    rs.next();
               while(!rs.isAfterLast())
               {
                   username[i]=rs.getString("username");
                   i++;              
                   rs.next();
               }
    改成
               while(rs.next())
               {
                   username[i]=rs.getString("username");
                   i++;              
                   
               }
    试试
      

  3.   

    你以前是不是学asp的????!!!
    你把
    while(!rs.isAfterLast())
               {
                   username[i]=rs.getString("username");
                   i++;              
                   rs.next();
               }
    改为
    while(rs.next())
               {
                   username[i]=rs.getString("username");
                   i++;              
                   
               }
      

  4.   

    不懂
    i变化不对吗?
    要是不想让他变还放到while里面干什么?