c# - 如何使用oracledataadapter进行事务处理?

标签 c# oracle transactions

我使用一种方法来使用 Select statiments 来获取表。当我使用链接数据库的 select statiment 时,我收到错误(ORA-01453 SET TRANSATION 必须是第一个转换语句。)

我知道 solition,但我无法使用 Oracledataadapter 的事务方法。

我想使用 Commit() ... 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 + "]");
            }
        }

最佳答案

基本上,你可以这样做:

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 一起使用,概念是相同的:创 build 置 DataAdapter.SelectCommand.Transaction 的事务,然后您可以使用 Commit()回滚()

关于c# - 如何使用oracledataadapter进行事务处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9924665/

相关文章:

postgresql - 带有 golang 准备语句的原始 sql 事务

MySQL 5.6 运行查询或提交事务时是否设置插入/更新的时间戳值?

mysql - 未知命令错误 - SQL+/Oracle

c# - 为什么 null 条件运算符对 == 和 .Equals() 的行为不同?

c# - 将 Kinect 的骨架数据与 XNA 中的 .fbx 模型相匹配

c# - 创建 WCF 服务时要避免哪些 DataContract 对象类型?

oracle - 在 oracle 中搞砸了表

java - 删除时权限不足

c# - 在事务中运行 C# 代码

c# - 刷新 EntityFramework 连接