===========记得添加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]