1. 怎样用事务(B/S) 1.1 .aspx文件的page声明部分加入 Transaction="Required" 如:<%@ Page Language="vb" Transaction="Required" AutoEventWireup="false" Codebehind="Order.aspx.vb" Inherits="EasyClick.Order" %> 1.2 在项目中引用\.Net\System.EnterpriseServices\ 1.3 在后台文件中导入命名空间system.EnterpriseService 如:Imports System.EnterpriseServices 1.4 在数据提交的过程中应用事务。 如: Try ……. ……. ’向数据库中成功写入数据 ContextUtil.SetComplete()’提交事务 Catch ex As Exception Dim exm As String = ex.Message ContextUtil.SetAbort()’事务回滚 End Try 1.5 添加事务处理过程。 如: ’事务提交处理过程 Private Sub Page_Commit(ByVal sender As System.Object, ByVal eArgs As System.EventArgs) Handles MyBase.CommitTransaction If IsPostBack Then Response.Redirect("../../aspx/success.aspx") End If End Sub’事务回滚处理过程 Private Sub Page_Abort(ByVal sender As System.Object, ByVal eArgs As System.EventArgs) Handles MyBase.AbortTransaction If IsPostBack Then Response.Redirect("../../aspx/failpage.aspx") End If End Sub
SqlTransaction Tran;
Conn.Open();
Tran=Conn.BeginTransaction();
SqlCommand Comm=new SqlCommand(Conn,sql);
Comm.Transaction=Tran;
Try{
Comm.Commit();}
catch
{
Comm.Rollback();
}
comm.Commit();
前面還有一個Comm.ExecuteNonQuery();
在 Page 指令里面加上一个属性Transaction,并设置此属性的值为 Required, 然后使用System.EnterpriseServices.ContextUtil 类的 SetAbort 和 SetComplete 方法来终止事物和完成事物.
{
bool InsertFlag = true;
SqlConnection sqlcon = new SqlConnection(Configuration.ConnectionString);
sqlcon.Open();
int mt = Info.Rows.Count;
SqlTransaction oSqlTran =sqlcon.BeginTransaction();
try
{
for(int i=0;i<Info.Rows.Count;i++)
{
//vCommandType, string vbsbh,string vdxgcbh,string vzymcid,string vzymc,string vzyryid,
//string vzyrymc,string vzgcbh,string vRegeditMan ,string vRegeditDate
InsertEachAssinRY(sqlcon,oSqlTran,
Info.Rows[i]["CommandType"].ToString(),
Info.Rows[i]["bsbh"].ToString(),
Info.Rows[i]["dxgcbh"].ToString(),
Info.Rows[i]["zymcid"].ToString(),
Info.Rows[i]["zymc"].ToString(),
Info.Rows[i]["zyryid"].ToString(),
Info.Rows[i]["zyrymc"].ToString(),
Info.Rows[i]["zgcbh"].ToString(),
Info.Rows[i]["RegeditMan"].ToString(),
Info.Rows[i]["RegeditDate"].ToString(),
Info.Rows[i]["ImprotanceLevel"].ToString()
);
}
oSqlTran.Commit();
}
catch(Exception e)
{
oSqlTran.Rollback();
InsertFlag = false;
throw(e);
}
finally
{
sqlcon.Close();
sqlcon = null;
Info = null; }
return InsertFlag;
}
public void InsertEachAssinRY(SqlConnection SqlConn,SqlTransaction sqlTrans,
string vCommandType, string vbsbh,string vdxgcbh,string vzymcid,string vzymc,string vzyryid,
string vzyrymc,string vzgcbh,string vRegeditMan,string vRegeditDate,string vImprotanceLevel)
{
SqlCommand oSqlCom = new SqlCommand("AssinInserZYRY",SqlConn,sqlTrans);
oSqlCom.CommandType = CommandType.StoredProcedure;
oSqlCom.Parameters.Add(new SqlParameter("@CommandType",SqlDbType.VarChar,20));
oSqlCom.Parameters["@CommandType"].Value = vCommandType.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@bsbh",SqlDbType.VarChar,20));
oSqlCom.Parameters["@bsbh"].Value = vbsbh.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@dxgcbh",SqlDbType.VarChar,20));
oSqlCom.Parameters["@dxgcbh"].Value = vdxgcbh.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@zymcid",SqlDbType.Int));
oSqlCom.Parameters["@zymcid"].Value =vzymcid;
oSqlCom.Parameters.Add(new SqlParameter("@zymc",SqlDbType.VarChar,20));
oSqlCom.Parameters["@zymc"].Value = vzymc.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@zyryid",SqlDbType.VarChar,20));
oSqlCom.Parameters["@zyryid"].Value =vzyryid.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@zyrymc",SqlDbType.VarChar,20));
oSqlCom.Parameters["@zyrymc"].Value = vzyrymc.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@zgcbh",SqlDbType.VarChar,20));
oSqlCom.Parameters["@zgcbh"].Value = vzgcbh.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@RegeditMan",SqlDbType.VarChar,20));
oSqlCom.Parameters["@RegeditMan"].Value = vRegeditMan.Trim();
oSqlCom.Parameters.Add(new SqlParameter("@RegeditDate",SqlDbType.DateTime));
oSqlCom.Parameters["@RegeditDate"].Value =vRegeditDate;
oSqlCom.Parameters.Add(new SqlParameter("@ImprotanceLevel",SqlDbType.VarChar,20));
oSqlCom.Parameters["@ImprotanceLevel"].Value = vImprotanceLevel;
oSqlCom.ExecuteNonQuery();
}
1. 怎样用事务(B/S)
1.1 .aspx文件的page声明部分加入 Transaction="Required"
如:<%@ Page Language="vb" Transaction="Required" AutoEventWireup="false" Codebehind="Order.aspx.vb" Inherits="EasyClick.Order" %>
1.2 在项目中引用\.Net\System.EnterpriseServices\
1.3 在后台文件中导入命名空间system.EnterpriseService
如:Imports System.EnterpriseServices
1.4 在数据提交的过程中应用事务。
如:
Try
…….
…….
’向数据库中成功写入数据
ContextUtil.SetComplete()’提交事务
Catch ex As Exception
Dim exm As String = ex.Message
ContextUtil.SetAbort()’事务回滚
End Try
1.5 添加事务处理过程。
如:
’事务提交处理过程
Private Sub Page_Commit(ByVal sender As System.Object, ByVal eArgs As System.EventArgs) Handles MyBase.CommitTransaction
If IsPostBack Then
Response.Redirect("../../aspx/success.aspx")
End If
End Sub’事务回滚处理过程
Private Sub Page_Abort(ByVal sender As System.Object, ByVal eArgs As System.EventArgs) Handles MyBase.AbortTransaction
If IsPostBack Then
Response.Redirect("../../aspx/failpage.aspx")
End If
End Sub