使用SqlTransaction实现数据库操作事务
SqlTransaction类是对SQL Server数据库进行事务处理的类,该类的实例由SqlConnection类实例的BeginTransaction方法创建,表示在该数据库连接实例上开始一个数据库事务,创建SqlTransaction类实例后,在程序中使用该实例的Commit方法提交事务,或者使用该类的Rollback方法回滚事务。
SqlTransaction示例
下面的示例创建一个SqlConnection和一个SqlTransaction。此示例演示如何使用BeginTransaction、Commit和Rollback等方法。出现任何错误时事务都会回滚。Try/Catch错误处理用于处理尝试提交或回滚事务时的所有错误。
using System;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using CNTVS.TOOLS;public partial class _Default : System.Web.UI.Page {protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){SqlConnection conn = Database.GetConn();SqlTransaction st = conn.BeginTransaction();try{string sql = "Insert Into T_Test(F_Name) values('A')"; Database.ExecuteNonQuery(st, CommandType.Text, sql);//这里会报错,在挂起的事务中,该事务分配的连接,不能再独占使用//string A = Database.ExecuteScalarToStr(conn,CommandType.Text,"Select F_ID From T_Test where F_Name='A'");sql = "Insert Into T_Test2(F_ID,F_Age) values(1,2)";Database.ExecuteNonQuery(st, CommandType.Text, sql);mit(); }catch (Exception Ex){st.Rollback();Website.WriteError(Ex);}finally {Database.Dispose(conn);}}}
参考资料: SqlTransaction事务的用法 /news/193.html