在java中写如下语句: 
ResultSet jshtzb_r= toUpdate.executeQuery("select * from jshtzb "); 
              t=1; 
              while(jshtzb_r.next()){ 
                  int year1=jshtzb_r.getInt("year1"); 
                  toUpdate.executeUpdate("update jshtzgsb set yearn=" + year1 +" where ID="+t+""); 
                  t++; 
              } 
当执行while时jshtzb_r.next()则循环调用数据表jshtzb的每行。可是数据表有5行,但是只循环了1次。为什么? 
这是哪里出错呢? 
前辈高手们帮忙哦!小弟万分感谢!

解决方案 »

  1.   

        t=1; 
                  while(jshtzb_r.next()){ 
                      int year1=jshtzb_r.getInt("year1"); 
                      toUpdate.executeUpdate("update jshtzgsb set yearn=" + year1 +" where ID="+t+""); 
    //这样做会不会把resultset的指针给改变了  在外面更新试试
                      t++; 
                 } 
    List l = new ArrayList(
    while(jshtzb_r.next()){ 
                      int year1=jshtzb_r.getInt("year1"); 
                       l.add(""+year1);
                      } 
    for(int i = 0 ;i< l.size();i++){
       
    toUpdate.executeUpdate("update jshtzgsb set yearn=" + l.get(i) +" where ID="+(i+1)+""); }
      

  2.   

    toUpdate.executeUpdate("update jshtzgsb set yearn=" + year1 +" where ID="+t+""); 没报错就不错了
    这个返回一个int型,你需要int a=toUpdate.executeUpdate("update jshtzgsb set yearn=" + year1 +" where ID="+t+""); 
      

  3.   

    本人的估计呢,就是使用了同一个statement啦~~~~,如果每次都是使用新的statement应该是没有问题的,就是每一个toUpdate方法里都是new 新的statement
      

  4.   

    这个是事务问题拉。你要先用把自动提交设为false,然后再执行完后(也就是while{})增加commit,