2014年9月23日 星期二

[SQL] 練習transaction

webform :

transaction
1.在執行中間有出錯,所有的刪除都會返回原始狀態



  1.   string str1 = @"DELETE LineItem where OrderId = @OrderId;"// SQL command 1
  2.  
  3.             string str2 = @"DELETE OrderStatus where OrderId = @OrderId;"// SQL command 2
  4.  
  5.             string str3 = @"DELETE Orders where OrderId = @OrderId;"// SQL command 2
  6.  
  7.  
  8.             SqlConnection conn = NEW SqlConnection(SqlHelper.ConnectionStringOrderDistributedTransaction);
  9.             SqlCommand delCommand = NEW SqlCommand(str1, conn);
  10.             SqlParameter param = NEW SqlParameter("@OrderId", 2);
  11.             delCommand.Parameters.ADD(param);
  12.  
  13.             conn.OPEN();
  14.             SqlTransaction trans = conn.BeginTransaction();
  15.             delCommand.TRANSACTION = trans;
  16.  
  17.             try
  18.             {
  19.                 delCommand.ExecuteNonQuery();
  20.                 delCommand.CommandText = str2;
  21.                 delCommand.CommandType = CommandType.Text;
  22.                 delCommand.ExecuteNonQuery();
  23.                 delCommand.CommandText = str3;
  24.                 delCommand.CommandType = CommandType.Text;
  25.                 delCommand.ExecuteNonQuery();
  26.  
  27.                 trans.Commit();
  28.             } // try
  29.             catch (Exception excep)
  30.             {
  31.                 trans.ROLLBACK();  // 出現例外就ROLLBACK
  32.                 logger.Debug(excep.Message);
  33.             } // catch
  34.             finally
  35.             {
  36.                 conn.Close();
  37.                 delCommand.Dispose();
  38.                 conn.Dispose();
  39.                 trans.Dispose();
  40.             } // finally



沒有留言:

張貼留言