oracle事务处理

public bool ExecDataBySqls(List<string> strSqls, OracleConnection conn)
        {
            bool booIsSucceed = false;                       //声明提交数据是否成功的标记
            OracleCommand cmd = new OracleCommand();        //创建OracleCommand对象
            cmd.Connection = conn;         //设置OracleCommand对象的Connection属性
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();               //打开数据库连接
            }
           OracleTransaction OraTran = conn.BeginTransaction();   //开始一个事务
            try
            {
                cmd.Transaction = OraTran;                      //设置OracleCommand对象的Transaction属性
                foreach (string item in strSqls)
                {
                    cmd.CommandType = CommandType.Text;        //设置命令类型为SQL文本命令
                    cmd.CommandText = item;                   //设置要对数据源执行的SQL语句
                    cmd.ExecuteNonQuery();                   //执行SQL语句并返回受影响的行数
                }
                OraTran.Commit();                         //提交事务,持久化数据
                booIsSucceed = true;                     //表示提交数据库成功
            }
            catch
            {
                OraTran.Rollback();               //回滚事务,恢复数据
                booIsSucceed = false;            //表示提交数据库失败!
            }
            finally
            {
                conn.Close();                 //关闭连接
                strSqls.Clear();             //清除列表strSqls中的元素
            }
            return booIsSucceed;           //方法返回值

        }
      多条SQL语句操作用LIST泛型封装,只要其中一条SQL语句执行失败即回滚,要么都成功要么都失败,为什么C#第一次调用该方法成功,之后一直是失败呢?一个界面多次添加记录,也不好设断点调试,查不出原因。请求高手指教。不胜感激。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮特大熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值