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 + "]");
}
}