怎样才可以使断网时不发生死锁,急!急!急!v

/**
  * 卡数据写入tcb_card
  *
  * @throws SQLException
  */
 public void cardDataInsertTcbCard(final List list,) throws SQLException {
  final JdbcTemplate template = new JdbcTemplate(this.getTcb());
  template.execute(new ConnectionCallback() {
   public Object doInConnection(Connection conn) {
    PreparedStatement pstmt = null;
    PreparedStatement taskPstmt = null;
    PreparedStatement cardApplyPstmt = null;
    try {
     conn.setAutoCommit(false);
     pstmt = conn.prepareStatement(INSERT_CARD_SQL);
     taskPstmt = conn.prepareStatement(SQL_UPADTE_TCB_TASK);
     cardApplyPstmt = conn
       .prepareStatement(SQL_UPADTE_TCB_CARD_APPLY);

     System.out.println("-----------------------");
     for (long i = 0; i < list.size(); i++) {
      System.out.println("---------------"+i);
      pstmt.setString(1, "");
      pstmt.setString(2, "");
      pstmt.setString(3, "");
      pstmt.setString(4,"");
      pstmt.setString(5, "");
      pstmt.setString(6, "");
      pstmt.setString(7, "");
      pstmt.setString(8,"" );
      pstmt.setString(9, "");
      pstmt.setString(10, "");

      pstmt.addBatch();

      if (i % 10000 == 0) {
       System.out.println("---------------"+i+"========"+i);
       pstmt.executeBatch();
       pstmt.clearBatch();
      }
     }
     pstmt.executeBatch();
     taskPstmt.setString(1, "");
     taskPstmt.setString(2, "");
     taskPstmt.setString(3, "");
     taskPstmt.setString(4, "");
     taskPstmt.setString(5, "");
     taskPstmt.execute();

     cardApplyPstmt.setString(1, "");
     cardApplyPstmt.setString(2, "");
     cardApplyPstmt.setString(3, "");
     cardApplyPstmt.setString(4, "");
     cardApplyPstmt.execute();


     conn.commit();
    }  catch (SQLException e) {
     try {
      conn.rollback();
     } catch (SQLException e1) {

     }
    } finally {

     if (pstmt != null) {
      try {
       pstmt.close();
      } catch (SQLException e) {

      }
     }
     if (taskPstmt != null) {
      try {
       taskPstmt.close();
      } catch (SQLException e) {

      }
     }
     if (cardApplyPstmt != null) {
      try {
       cardApplyPstmt.close();
      } catch (SQLException e) {

      }
     }
    }

    return null;
   }
  });
 }

 

//插入卡数据

private static final String INSERT_CARD_SQL = "insert into card(ID,CUSTOMER_ID,VISIBLE_PWD,INIT_PWD,SECOND_TRACK,STATUS,MERCHANT_ID,BATCH_NO,CARD_NAME,THIRD_TRACK) values(?,?,?,?,?,?,?,?,?,?)";

//更新任务表状态

 private static final String SQL_UPADTE_TCB_TASK = "update TCB_TASK t set t.LAST_ACTION=?, t.LAST_COMMENT=? , t.WORKFLOW_ID=?, t.STAGE=? where t.TASK_ID=?";

//更新卡申请表状态

 private static final String SQL_UPADTE_TCB_CARD_APPLY = "update TCB_CARD_APPLY r set r.STATUS=?, r.EXPORT_COMMNET=? , r.EXPORT_PERSON=? where r.TBID=?";

 

数据库是oracal10g,spring+struts+ibatis,因为原先事物处理不能正常进行,所以改成这样

为什么我执行插入500000的数据时服务器断网,造成数据库死锁,不能再插入这些数据,但可以插入其它的数据,程序什么地方除了问题?怎样才可以使断网时不发生死锁。急!急!急!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值