vb.net使用事务的简单介绍( 五 )


关于在VB.NET中怎么使用事务的问题,还有其在vb.net中要定义一个事务,需要使用Begin tran命令,在这一命令之后的任何语句都将被认为是事务的一部分 。命令Commit用来完成VB.NET处理 , 并使事务对数据库所作的修改成为永久的 。Rollback命令用来取消一个事务,并还原事务对数据库所作的修改 。
详谈如何在VB.NET使用ORACLR数据库事务麻烦告诉我Oracle.DataAccess.Client 命名空间是 ODP.NET 的一部分,它包含许多类,其中有OracleConnection、OracleCommand 和 OracleTransaction 。示例程序用到了这些类 。VB.NET使用ORACLR第 1 步创建一个 OracleConnection 对象连接到 Oracle 数据库,然后打开该连接 。
在C# 中:OracleConnection myOracleConnection =new OracleConnection( "User Id=store;Password=store;Data Source=ORCL" ); myOracleConnection.Open(); 在VB.NET 中:Dim myOracleConnection As New OracleConnection( _ "User Id=store;Password=store;Data Source=ORCL") myOracleConnection.Open() User Id 和 Password 属性指定了您所要连接到的模式的数据库用户和口令 。Data Source 属性指定了数据库的 Oracle Net 服务名称;初始数据库的默认服务名称为 ORCL 。如果您使用的不是初始数据库 , 或者您的服务名称不同,那么您需要在程序中修改 Data Source 属性的设置 。VB.NET使用ORACLR第 2 步创建一个 OracleTransaction 对象,然后调用 OracleConnection 对象的 BeginTransaction() 方法启动事务 。在C# 中:OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction(); In VB.NET: Dim myOracleTransaction As OracleTransaction = _ myOracleConnection.BeginTransaction() VB.NET使用ORACLR第3 步创建一个 OracleCommand 对象,用于存储 SQL 语句 。在C# 中:OracleCommand myOracleCommand = myOracleConnection.CreateCommand(); 在VB.NET 中:Dim myOracleCommand As OracleCommand = myOracleConnection.CreateCommand 因为OracleCommand 对象使用 OracleConnection 对象的 CreateCommand() 方法创建的 , 所以它自动使用在第 2 步中为 OracleConnection 对象设置的事务 。VB.NET使用ORACLR第 4 步将OracleCommand 对象的 CommandText 属性设为向表 product_types 中添加一行的第一条 INSERT 语句 。
在C# 中:myOracleCommand.CommandText = "INSERT INTO product_types (" + " product_type_id, name" + ") VALUES (" + " 3, 'Magazine'" + ")"; 在VB.NET 中:myOracleCommand.CommandText = _ "INSERT INTO product_types ("_ " product_type_id, name"_ ") VALUES ("_ " 3, 'Magazine'"_ ")" VB.NET使用ORACLR第 5 步
使用OracleCommand 对象的 ExecuteNonQuery() 方法运行 INSERT 语句 。
在C# 中:myOracleCommand.ExecuteNonQuery(); 在VB.NET 中:myOracleCommand.ExecuteNonQuery(); VB.NET使用ORACLR第 6 和第 7 步将OracleCommand 对象的 CommandText 属性设为向表 Products 中添加一行的第二条 INSERT 语句,并运行它 。
在C# 中: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(); 在VB.NET 中: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() VB.NET使用ORACLR第 8 步使用OracleTransaction 对象的 Commit() 方法提交数据库中的事务 。
在C# 中:myOracleTransaction.Commit(); 在VB.NET 中:myOracleTransaction.Commit() 在完成 Commit() 方法之后,由 INSERT 语句添加的两行将在数据库中永久记录 。VB.NET使用ORACLR第 9 步使用Close() 方法关闭 OracleConnection 对象 。在C# 中:myOracleConnection.Close(); 在VB.NET 中: myOracleConnection.Close() 编译并运行示例程序要编译 C# 示例程序 , 您可以使用 csc 命令运行 C# 编译器 。因为程序使用 Oracle Data Access DLL,所以您应使用 /r 选项指定该 DLL 的完整路径,例如:注意:您需要用您计算机上的相应路径来替换该 DLL 的路径 。此外 , 如果您的计算机找不到 csc 编译器,那么您可能需要运行 Microsoft sdkvars.bat 脚本来首先设置 .NET SDK 的环境变量;您可以在安装 .NET SDK 的 bin 目录中找到该脚本 。如果您遇到以下错误:Example1.cs(10,7):error CS0246:The type or namespace name 'Oracle' could not be found (are you missing a using directive or an assembly reference?) 这说明您没有在编译命令中正确指定 Oracle Data Access DLL 。(有关设置的信息,请参阅 John Paul Cook 的技术文章“在 Oracle 数据库上构建 .NET 应用程序” 。) 下面是用于编译 VB.NET 程序的等价命令:vbc TransExample1.vb /r:C:\oracle\product\10.1.0\ Client_1\bin\Oracle.DataAccess.dll /r:system.dll /r:system.data.dll 接下来,输入以下命令,运行示例: An exception was thrown Message = ORA-12514:TNS:listener does not currently know of service requested in connect descriptor 您将看到程序的输出 。不过,如果您遇到类似以下的异常这说明 OracleConnection 对象的连接字符串中的 Data Source 的设置不正确 。您应当咨询您的 DBA 或查阅 Oracle Net 文档以获得更多详细信息 。如果您使用的是 VS .NET , 那么您可以遵循以下指示来编译和运行 C# 程序 TransExample1.cs:

推荐阅读