您的位置:首页 > 数据库 > Oracle

oracle事务处理

2011-12-19 22:43 302 查看
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#第一次调用该方法成功,之后一直是失败呢?一个界面多次添加记录,也不好设断点调试,查不出原因。请求高手指教。不胜感激。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息