如何将oracledataadapter与事务一起使用

本文关键字:一起 事务 oracledataadapter | 更新日期: 2023-09-27 18:29:18

我使用一个方法来使用Select静态获取。当我使用链接数据库使用选择语句时,我得到了错误(ORA-01453 SET TRANSACTION必须是交易的第一个语句。)

我知道solation,但我不能将事务处理方法与Oracledataadapter一起使用。

我想使用Commit()。。。回滚()。

这是我的代码:

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

如何将oracledataadapter与事务一起使用

基本上,您可以这样做:

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

要将其与DataAdapter一起使用,概念是相同的:创建事务设置DataAdapter.SelectCommand.Transaction,然后可以使用Commit()Rollback()进行控制。