模拟事务
-------------------------------
或者找下关于这个类的资料看看:
<%@ Import Namespace="System.EnterpriseServices" %>
----------
<%@ Page Language="C#" Transaction="RequiresNew" %>
<%@ Import Namespace="System.EnterpriseServices" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat=server>
void Page_Load(Object sender , EventArgs e)
{
SqlConnection conBank;
string strUpdateAccountA;
string strUpdateAccountB;
SqlCommand cmdUpdateAccountA;
SqlCommand cmdUpdateAccountB;
// Initialize objects
conBank = new SqlConnection(@"Server=localhost;Trusted_Connection=true;database=conBank" );
strUpdateAccountA = "Update AccountA set { Balance = Balance - 999.99 WHERE Customer=//Smith//";
cmdUpdateAccountA = new SqlCommand( strUpdateAccountA, conBank );
strUpdateAccountB = "Update AccountB set { Balance = Balance + 999.99 WHERE Customer=//Smith//";
cmdUpdateAccountB = new SqlCommand( strUpdateAccountB, conBank );
// Open connection
conBank.Open();
// try executing both commands
try
{
cmdUpdateAccountA.ExecuteNonQuery();
cmdUpdateAccountB.ExecuteNonQuery();
// Commit the transaction
ContextUtil.SetComplete();
Response.Write( "Transaction Successful!" );
}
catch (Exception eX)
{
ContextUtil.SetAbort();
Response.Write( "Transaction Failed!" );
}
finally
{
conBank.Close();
}
}
</script>
--
// 这个我自己写的
public void RunSqlTransaction(string myConnString,string sql1,string sql2)
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open();
SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans;
// 开始事务
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;
try
{
myCommand.CommandText = sql1;
myCommand.ExecuteNonQuery();
myCommand.CommandText = sql2;
myCommand.ExecuteNonQuery();
myTrans.Commit();// ok
}
catch(Exception e)
{
try
{
myTrans.Rollback("SampleTransaction");
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Response.Write("错误类型为" + ex.GetType() + ",在试图滚回事务时遇到.");
}
}
Response.Write("错误类型为" + e.GetType() + ",在插入数据时遇到.");
Response.Write("两个记录都未写进数据库.");
}
finally
{
myConnection.Close();
}
}