大家好,又见面了,我是你们的朋友全栈君。
使用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);
st.Commit();
}
catch (Exception Ex)
{
st.Rollback();
Website.WriteError(Ex);
}
finally
{
Database.Dispose(conn);
}
}
}
参考资料: SqlTransaction事务的用法 http://www.studyofnet.com/news/193.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132696.html原文链接:https://javaforall.net
