在 .NET 中使用 Oracle 数据库事务(学习)

  ===========记得添加Oracle.DataAccess.dll==========

以下介紹Oracle提供的Oracle.DataAccess.Client.OracleConnection的使用
命名空間:Oracle.DataAccess.Client
需要引入(參照)Oracle.DataAccess.Client.dll,
位置:C:/Oracle/product/10.1.0/Client_1/bin、Oracle.DataAccess.dll

 

 [code=C#]

using Oracle.DataAccess.Client;//**********

 

protected void Button1_Click(object sender, EventArgs e)
        {
            OracleTrans1();
        }

        private void OracleTrans()
        {
            //1.创建一个 OracleConnection 对象连接到 Oracle 数据库,然后打开该连接。
            OracleConnection myOracleConnection = new OracleConnection("User Id=store;Password=store;Data Source=ORCL");
            myOracleConnection.Open();

            //2.创建一个 OracleTransaction 对象,然后调用 OracleConnection 对象的 BeginTransaction() 方法启动事务。
            OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction();

            //3.创建一个 OracleCommand 对象,用于存储 SQL 语句。
            //因为 OracleCommand 对象使用 OracleConnection 对象的 CreateCommand() 方法创建的,
            //所以它自动使用在第 2 步中为 OracleConnection 对象设置的事务。
            OracleCommand myOracleCommand = myOracleConnection.CreateCommand();

            //4.将 OracleCommand 对象的 CommandText 属性设为向表 product_types 中添加一行的第一条 INSERT 语句。
            myOracleCommand.CommandText ="INSERT INTO product_types (" +"  product_type_id, name" +") VALUES (" +"  3, 'Magazine'" +  ")";

            //5.使用 OracleCommand 对象的 ExecuteNonQuery() 方法运行 INSERT 语句。
            myOracleCommand.ExecuteNonQuery();

            //6,7.将 OracleCommand 对象的 CommandText 属性设为向表 Products 中添加一行的第二条 INSERT 语句,并运行它。
            //注意: myOracleCommand,他执行完上个sql语句后,再次执行
            myOracleCommand.CommandText ="INSERT INTO products (" +"  product_id, product_type_id, name, description, price"
                +") VALUES (" +"  5, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" +  ")";
            myOracleCommand.ExecuteNonQuery();

            //8.使用 OracleTransaction 对象的 Commit() 方法提交数据库中的事务。
            myOracleTransaction.Commit();

            //9.释放资源
            myOracleCommand.Dispose();
            myOracleTransaction.Dispose();
            myOracleConnection.Close();
            myOracleConnection.Dispose();

        }

        //设置回滚点
        private void OracleTrans1()
        {
       
            //1.创建一个 OracleConnection 对象连接到 Oracle 数据库,然后打开该连接。
            OracleConnection myOracleConnection = new OracleConnection("User Id=store;Password=store;Data Source=ORCL");
            myOracleConnection.Open();

            //2.创建一个 OracleTransaction 对象,然后调用 OracleConnection 对象的 BeginTransaction() 方法启动事务。
            OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction();

            //3.创建一个 OracleCommand 对象,用于存储 SQL 语句。
            //因为 OracleCommand 对象使用 OracleConnection 对象的 CreateCommand() 方法创建的,
            //所以它自动使用在第 2 步中为 OracleConnection 对象设置的事务。
            OracleCommand myOracleCommand = myOracleConnection.CreateCommand();
            try
            {
                myOracleTransaction.Save("SaveProduct");

                //6,7.将 OracleCommand 对象的 CommandText 属性设为向表 Products 中添加一行的第二条 INSERT 语句,并运行它。
                //注意: myOracleCommand,他执行完上个sql语句后,再次执行
                myOracleCommand.CommandText = "INSERT INTO products (" + "  product_id, product_type_id, name, description, price"
                    + ") VALUES (" + "  6, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" + ")";//
                myOracleCommand.ExecuteNonQuery();

                myOracleTransaction.Save("SaveProduct1");

                //4.将 OracleCommand 对象的 CommandText 属性设为向表 product_types 中添加一行的第一条 INSERT 语句。
                myOracleCommand.CommandText = "INSERT INTO product_types (" + "  product_type_id, name" + ") VALUES (" + "  3, 'Magazine'" + ")";

                //5.使用 OracleCommand 对象的 ExecuteNonQuery() 方法运行 INSERT 语句。
                myOracleCommand.ExecuteNonQuery();

 

                //8.使用 OracleTransaction 对象的 Commit() 方法提交数据库中的事务。
                myOracleTransaction.Commit();
            }catch(Exception ex)
            {
                myOracleTransaction.Rollback("SaveProduct1");
                //8.使用 OracleTransaction 对象的 Commit() 方法提交数据库中的事务。
               
                myOracleTransaction.Commit();//记得加上此句

                Response.Write("<script>alert('炒作失败!'"+ex.ToString()+");</script>");
                Response.Write( ex.ToString() );
            }
            finally{
            //9.释放资源
            myOracleCommand.Dispose();
            myOracleTransaction.Dispose();
            myOracleConnection.Close();
            myOracleConnection.Dispose();
            }
        }

[/code]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值