2016-06-23 11 views
2

私はそこに複数のメソッドがあり、そこではデータベースの読み込み、挿入、更新などの挿入ボタンがあると言います。これらのすべてのメソッドに対して単一のトランザクションを使用することは可能ですか? ように:複数のメソッドC#に1つのトランザクションを使用していますか?

private void method_A(){/* doing tons of db stuff.. */} 
private void method_B(){/*..*/} 
private void method_C(){/*..*/} 


protected void Insert_OnClick(object sender, EventArgs e) 
{ 
    //begin transaction 

    Method_A(); 

    Method_B(); 

    Method_C(); 

    //end transaction 

} 

は、この方法は可能ですか?前にトランザクションを使用したことはありません MS Accessデータベースを使用している場合はそれが重要です。

+0

見たことがあり、[この](http://stackoverflow.com/questions/2078432/do-we-have-transactions-in-ms-access)? – PaulF

+0

@PaulF C#経由でトランザクションを実装する方法が示されていないか、単純に 'BEGIN TRANSACTION'を追加しても動作しますか?C#コードとメソッド..' COMMIT [TRANSACTION | WORK] ''ロールバック[TRANSACTION | WORK] '? – Nyprez

答えて

1
using (OleDbConnection connection = 
        new OleDbConnection(connectionString)) 
     { 
      OleDbCommand command = new OleDbCommand(); 
      OleDbTransaction transaction = null; 

      // Set the Connection to the new OleDbConnection. 
      command.Connection = connection; 

      // Open the connection and execute the transaction. 
      try 
      { 
       connection.Open(); 
       transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted); 
    transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted); 

      // Assign transaction object for a pending local transaction. 
      command.Connection = connection; 
      command.Transaction = transaction; 

       Method1(command.connection); 
       Method2(command.connection); 

      } 
    } 

このようなものはありますか?

したがって、1つの接続を使用して、トランザクションレベルを設定し、メソッドを実行します。

は、詳細はこちらを参照してください:あなたはhttps://msdn.microsoft.com/en-us/library/93ehy0z8(v=vs.110).aspx

+0

'Method1();'と 'Method2();'は現在トランザクション内にあるか、パラメータ内に何かを渡す必要がありますか? – Nyprez

+0

@Nyprez私はあなたが接続を通過する必要がありますと信じています。しかし、トランザクションは私が思うに留まるべきである –

+0

@ Andrew Kilburnは、 'Method1();'と 'Method2();'に渡すべき 'command'または' connection'ですか? – Nyprez

関連する問題