首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事务回滚错误

事务回滚错误
EN

Stack Overflow用户
提问于 2012-05-15 09:06:02
回答 1查看 555关注 0票数 0

我使用的是来自Here的ado.net助手类。我不知道如何通过帮助器使用transaction。下面是我尝试过的代码。我做的是对的吗?我总是遇到This SqlTransaction has completed; it is no longer usable.错误。

代码语言:javascript
复制
            Adodb.ConnectionString = "...";

            Adodb db = new Adodb(); 
            SqlTransaction trans = db.BeginTransaction();

            try
            {
                string qry = "UPDATE PSCHCounter SET SeqNo = '0' WHERE CountID = 'PCSTL'";
                db.ExecNonQuery(qry);
                string qry1 = "UPDATE PSCHCounter SET SeqNo = '1' WHERE CountID = 'GJNLP'";
                db.ExecNonQuery(qry1);

                // Commit 
                trans.Commit();
            }
            catch (Exception ex)
            {
                try
                {
                    // Rollback
                    trans.Rollback();
                    // Log exception
                }
                catch (Exception ex2)
                {
                    // Log exception
                }
            }
            finally
            {
                // Close db connection
                db.Dispose();
            }

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-15 09:16:02

问题是您调用的是trans.Commit()而不是db.Commit()。这对我很有效:

代码语言:javascript
复制
    AdoHelper.ConnectionString = "...";

    using (AdoHelper db = new AdoHelper())
    {
        // Start the transaction
        db.BeginTransaction();

        try
        {
            db.ExecNonQuery("UPDATE FeedItems SET Title = 'Test3' WHERE Id = 456");
            db.ExecNonQuery("UPDATE FeedItems SET Title = 'Test4' WHERE Id = 457");

            // Commit  
            db.Commit();
        }
        catch (Exception ex)
        {
            db.Rollback();
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10592942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档