2012-03-29 12 views
2

私はsolitionを知っているが、私はカント私はエラーを得たリンクデータベース(ORA-01453 SETのトランザクションの独立トランザクションの独立の最初のステートメントでなければなりません。)トランザクションでoracledataadapterを使用する方法?

を使用して選択statimentを使用する選択statiments.Whenを使用してgettableするメソッドを使用しますOracledataadapterでTransaction methotを使用してください。

私はCommit()... Rollback()を使用します。

oraConn = new OracleConnection("CONNECTION STRING"); 
oraConn.Open(); 

//Command with transaction 
OracleCommand oraCom = oraConn.CreateCommand(); 
oraCom.CommandText = "INSERT QUERY"; 
oraCom.Transaction = oraCom.Connection.BeginTransaction(IsolationLevel.ReadCommitted); 

//Execute 
if (oraCom.Connection.State == ConnectionState.Closed) 
{ 
     oraCom.Connection.Open(); 
} 

oraCom.ExecuteNonQuery(); 

//Commit/Rollback 
oraCom.Transaction.Commit(); // or oraCom.Transaction.Rollback(); 

は、データアダプターでこれを使用するには、コンセプトは同じです:あなたはこのような何かを行うことができ、基本的に

private System.Data.DataTable GetDataTable_(string SqlStatement, bool fromProcCall) 
     { 

      OracleConnection Con = new OracleConnection(); 
      try 
      { 
       Con = Connection(); 
       OpenConnection(Con, fromProcCall); 

       //----------------------------------------- 
       DateTime startTime = DateTime.Now; 
       //----------------------------------------- 
       DataSet ds = new DataSet(); 

       OracleDataAdapter sda = new OracleDataAdapter(SqlStatement, Con);     
       sda.Fill(ds, "tbl1"); 
       //----------------------------------------- 
       if (!fromProcCall) 
        DurationOfIfsAction = DateTime.Now.Subtract(startTime).Milliseconds; 
       else 
        DurationOfFirstIfsAction = DateTime.Now.Subtract(startTime).Milliseconds; 
       //----------------------------------------- 

       CloseConnection(Con); 
       return ds.Tables[0]; 
      } 
      catch (Exception ex) 
      { 
       if (Con != null) 
       { 
        try 
        { 
         CloseConnection(Con); 
        } 
        catch (Exception) { } 
       } 
       throw new Exception("ERROR[" + ex.Message + "]"); 
      } 
     } 

答えて

3

:作成したトランザクションをDataAdapter.SelectCommand.Transaction設定

この

は私のコードです Commit()Rollback()で制御できます。

関連する問題