首页 > 解决方案 > MSSqlServer 错误:事务完成

问题描述

我在尝试处理事务时遇到错误。没有它一切运行正常,但有了它我得到一个奇怪的错误:事务已完成,不能再使用(我的错误翻译)

这是我的代码,直到出现错误:

using (var conn = new SqlConnection(gl.constr))
{
    using (SqlCommand cm = new SqlCommand())
    {
        conn.Open();
        using (SqlTransaction tr = conn.BeginTransaction())
        {
            try
            {
                cm.Connection = conn;
                cm.Transaction = tr;
                cm.CommandText = "INSERT INTO Bookings (Time, Price, BookingRef, BookingInternalRef)" +
                                  " VALUES(" +
                                  "getdate(), "+ sPrice + ", " + 
                                  db.AddAphens(reference) + ", " +
                                  db.AddAphens(internalBookref) +
                                  ")";
                cm.ExecuteNonQuery();  //this works
                tr.Commit();

在提交错误弹出窗口。

标签: c#sql-servertransactionscommit

解决方案


SqlTransaction tr = conn.BeginTransaction()单个 DML 操作不需要显式事务声明,因为每个 DML 操作都将是隐式事务绑定的。因此,您可以一起删除您的交易声明,它应该可以正常工作


推荐阅读