事务技术示例

更新:2007 年 11 月

本示例说明如何在 .NET Framework 应用程序中使用事务。具体地说,该示例通过检索 SQL Server 数据库中的值,阐释事务的“commit”和“abort”函数,从而使用户可以修改该值,并将新值发送到数据库。

awsb14xh.alert_note(zh-cn,VS.90).gif说明:

若要生成并执行此示例,必须已在计算机上安装 Microsoft SQL Server 2000 或更高版本,还必须对数据库引擎进行配置,使其可以使用 Windows 身份验证。其他配置需要在 TxObj.cs 或 TxObj.vb 文件中编辑 SQL 连接字符串。

有关使用这些示例的信息,请参见下面的主题:

创建 TxDemoDB 数据库

  1. 打开命令提示窗口,定位到 Technologies\ComponentServices\Transactions 目录下语言特定的子目录之一。

  2. 在命令行中键入 osql -E -S (local)\SQLExpress -i TxDB.sql。或者,打开 SQL Server 查询分析器窗口,再加载 TxDB.sql,然后选择“执行”。

    此操作将在 SQL Server 中创建一个新的 TxDemoDB 数据库。

使用命令提示生成示例

  1. 打开一个命令提示窗口,定位到 Technologies\ComponentServices\Transactions 目录下语言特定的子目录之一,或使用上面创建 TxDemoDB 数据库时所用的命令提示窗口。

  2. 根据所选的编程语言,在命令行中键入 msbuild TransactionsCS.sln 或 msbuild TransactionsVB.sln。

使用 Visual Studio 生成示例

  1. 打开 Windows 资源管理器,定位到该示例的语言特定的子目录之一。

  2. 根据所选的编程语言,双击 TransactionsCS.sln 或 TransactionsVB.sln 的图标,在 Visual Studio 中打开该文件。

  3. 在“生成”菜单上单击“生成解决方案”。

运行示例

  1. 打开命令提示窗口或 Windows 资源管理器,定位到包含所生成可执行文件的目录。

  2. 在命令行中键入 TxDemo.exe,或者在 Windows 资源管理器中双击该可执行文件的图标。

  3. 将会从数据库中读取当前值,并显示该值。

  4. 在“New Value”(新值)字段中输入一个大于等于 0、小于等于 10 的数字,然后单击“Post”(发送)按钮。

  5. 此时,应该显示“About to commit the transaction”(准备提交事务)这则消息。单击“确定”。“Current Value”(当前值)字段会立即使用输入的值进行更新。

  6. 在“New Value”字段中输入一个小于 0 或大于 10 的数字。单击“Post”按钮。

  7. 此时,应该显示“About to abort the transaction because the new value ([yourvalue]) is either <0 or >10.”(准备中止事务,因为新值 ([yourvalue]) 小于 0 或大于 10)这则消息。单击“确定”。请注意,“Current Value”字段不会发生更改。这是因为,在事务处理期间,当前值没有发生更改,但是,如果回滚该事务,该值会更改回原始值。

  8. 现在,使用“AutoPost”(自动发送)按钮和相同的数据执行此操作。您将注意到,在该演示中止事务后,会引发一个 COMException。这是为了通知 AutoComplete 执行中止操作。

卸载示例

  1. 在命令提示窗口中,定位到运行 msbuild.exe 或打开 .sln 文件时所在的目录。

  2. 根据所选的编程语言,键入 msbuild.exe TransactionsVB.vbproj /t:Clean 或 msbuild.exe TransactionsCS.csproj/t:Clean。此操作将会使用 /u 调用 regsvcs.exe 和 gacutil.exe,以便从 COM+ 目录和全局程序集缓存中移除示例文件。

  3. 在命令行中键入 osql -E -S (local)\SQLExpress -i TxDBClean.sql。或者,打开 SQL Server 查询分析器窗口,再加载 TxDBClean.sql 文件,然后选择“执行”。此操作将从 SQL Server 中移除 TXDemoDB 数据库。

要求

**.NET Framework 版本:**2.0、1.1、1.0

备注

事务是一组相互关联的操作。要么执行全部操作,要么不执行任何一项操作。只要事务中有一项操作失败,就必须回滚此前的所有操作,以确保一致性。

有关二进制文件的创建和注册步骤示例的更多信息,请参见源代码文件中的注释。在组件服务管理工具中,C# 组件显示为 TxDemoServerCS.TxObject。VB 版本显示为 TxDemoServerVB.TxObject。

请参见

概念

本地事务 (ADO.NET)

参考

AutoCompleteAttribute

ContextUtil

ServicedComponent

System.ComponentModel

System.Data

System.Data.SqlClient

System.Drawing

System.EnterpriseServices

System.Reflection

System.Runtime.InteropServices

System.Runtime.Serialization

System.Windows.Forms

TransactionAttribute

TransactionOption

WebMethodAttribute