0

ここからado.netヘルパークラスを使用しています。ヘルパーを使ったトランザクションの使い方がわかりません。以下は私が試したコードです。私は正しいことをしていますか?私はいつもThis SqlTransaction has completed; it is no longer usable.エラーにぶつかります。

            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();
            }

ありがとうございました。

4

1 に答える 1

1

trans.Commit()問題は、代わりに呼び出していることですdb.Commit()。これは私のために働いた:

    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();
        }
    }
于 2012-05-15T01:16:01.693 に答える