1.也许是代码贴不完整,比如setAutoCommit只有一个,不妨检查一下你的代码结构是否符合 以下结构:
    try{
      ...
      flag = dbconn.getAutoCommit();
      dbconn.setAutoCommit(false);
               ......
               ......        dbconn.commit();
      dbconn.setAutoCommit(flag);
    }catch(SQLException se){
      try{
          dbconn.rollback();
          dbconn.setAutoCommit(flag);
      }catch(SQLException sqlexception1){
          se.printStackTrace();
       }
    }
    finally{
      try{
                 //close rs,statement,conn  
                 ..... 
      }catch(SQLException sqlexception1){
        sqlexception1.printStackTrace();
      }
    }
2. 在循环里面最好使用preparedStatement,而不用statement

解决方案 »

  1.   

    to : meiyuntao (洋葱头)兄, 你是不是做电子报税的啊,哈哈,
      

  2.   

    我的结构其实也很简单,所以才觉得出的奇怪的问题
    Statement stat = null ;
    ResultSet rs   = null ;
    stat.stat =dbconn.createStatement();
    try
    {
       stat.execute( DeleteSql ); //删除
       rs   = stat.executeQuery( SelectSql1 );
       while( rs.next())
       {
          //检索数据
       }
       stat.execute( InsertSql[ii] );//插入
       dbconn.commit() ;
       dbconn.setAutoCommit( true ) ;
    }
    catch( SQLException ex)
    {
       dbconn.rollback() ;
       dbconn.setAutoCommit( true ) ;
    }
    结构就是这样,而且编译也通过了,有执行结果
    不过同样的代码会出现随机不同的结果,郁闷中~~~
      

  3.   

    to: bobfallen(逐流) 
    就是电子报税啊,怎么,是不是在抢生意了啊~~~~~~
      

  4.   

    忘了请教preparedStatement的用法了,和statement完全一样吗,不过我直接替换了编译有错误,cannot resolve symbol
    probably occurred due to an error in /ReportRecord/sb_Declare/msb_Declare_Tran.jsp line 42:
    preparedStatement stat = null ;大小写的故障嘛,请哪位指点一下用法,代码示例~谢谢
      

  5.   

    就是因为还没能分析出结果
    各位有没有谁遇到过或则知道这种情况的
    我使用的时sql server2000用jdbc数据引擎,用的weblogic7.0,jdk1.3用一个事务控制数据库操作及异常
    事务开始首先将连接的自动提交取消,即设置setAutoCommit为false
      1、首先执行删除语句,删除当月数据(该步检测过正确),使用Statement的execute方法
      2、接着检索前面月份符合条件数据(检索的数据条数经调试,正确),使用ResultSet
      3、再使用循环插入数据(循环次数经输出也和检索的结果一致并且正确)
      最后才提交数据
    在数据库操作的任何一步有异常则回滚我已确定过,删除是肯定成功了的,可是我本来检索的符合条件的记录有只有3条,可是有时会重复插入两次(6条记录,两两重复,或则4条5条记录,其中的一部分重复)有谁知道的,急着用的,又调试不过去,请各位高手帮帮忙~~
    谢谢
      

  6.   

    程序没有用线程,只是一个事务
    数据库处理策略?可是用的sql server没有作什么特殊的设置的,理论上我还不知道为什么会出现这种情况,现在逻辑上是正确,可是实际数据库操作不对(数据库中有了多余数据)
    请再帮忙看看~~
      

  7.   

    在数据库中用sql或你的事务直接做,看看结果。
      

  8.   

    把插入的数据放到另一个表中,每次插之前,Delete所有数据。然后看看插入后的结果,是否符合要求,这样把逻辑分开一点,容易找出错误所在。
      

  9.   

    我建议你建立两个PreparedStatement.一个用于删除操作;另一个用于插入操作!在第一个结束后记得加上  close()就可以了!这样应该可以解决你的问题!
      

  10.   

    请教PreparedStatement的用法
    给点代码参考一下就是不太合理,相同的操作对相同的数据出现不同结果还合理啊~~PreparedStatement如何创建??
      

  11.   

    我查了查jdk的文档有关prepareStatement的
    不过看资料好象支持update更新和select检索
    好象没有delete和insert的说明,到底支持不?~~
    请高手指点指点
    如果支持给个小例子就好的
    谢谢
      

  12.   

    PreparedStatement只有这两种方法executeUpdate和executeQuery
    我怎么执行删除和插入啊??
      

  13.   

    executeUpdate方法里面的SQL语句是Delete或者Insert语句,就可以执行了。