oracle数据库事务使用,在 .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("");

Response.Write( ex.ToString() );

}

finally{

//9.释放资源

myOracleCommand.Dispose();

myOracleTransaction.Dispose();

myOracleConnection.Close();

myOracleConnection.Dispose();

}

}

[/code]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值