2012-05-15 3 views
0

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

감사합니다.

+0

다른 좋은 데이터베이스 도우미가 좋습니다? – Alvin

+0

MS 엔터프라이즈 라이브러리가 있지만 훨씬 더 가파른 학습 곡선이 있습니다. http://msdn.microsoft.com/en-us/library/ff648951.aspx – mgnoonan

+0

@mgnoonan 감사합니다. 빠르고 쉬운 것이 필요합니다. – Alvin

답변

1

db.Commit() 대신 trans.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(); 
     } 
    } 
+0

고마워, 귀하의 코드는 도우미 클래스를 사용하지 않고 있습니다. – Alvin

+0

사과, 나는 첫 번째 문장을 완전히 건너 뛰었습니다. 나는 한 번 둘러보고 내 대답을 수정할 것입니다. – mgnoonan

+0

노력에 감사드립니다. – Alvin