事务技术示例
更新:2007 年 11 月
本示例说明如何在 .NET Framework 应用程序中使用事务。具体地说,该示例通过检索 SQL Server 数据库中的值,阐释事务的“commit”和“abort”函数,从而使用户可以修改该值,并将新值发送到数据库。
说明: |
---|
若要生成并执行此示例,必须已在计算机上安装 Microsoft SQL Server 2000 或更高版本,还必须对数据库引擎进行配置,使其可以使用 Windows 身份验证。其他配置需要在 TxObj.cs 或 TxObj.vb 文件中编辑 SQL 连接字符串。 |
有关使用这些示例的信息,请参见下面的主题:
创建 TxDemoDB 数据库
打开命令提示窗口,定位到 Technologies\ComponentServices\Transactions 目录下语言特定的子目录之一。
在命令行中键入 osql -E -S (local)\SQLExpress -i TxDB.sql。或者,打开 SQL Server 查询分析器窗口,再加载 TxDB.sql,然后选择“执行”。
此操作将在 SQL Server 中创建一个新的 TxDemoDB 数据库。
使用命令提示生成示例
打开一个命令提示窗口,定位到 Technologies\ComponentServices\Transactions 目录下语言特定的子目录之一,或使用上面创建 TxDemoDB 数据库时所用的命令提示窗口。
根据所选的编程语言,在命令行中键入 msbuild TransactionsCS.sln 或 msbuild TransactionsVB.sln。
使用 Visual Studio 生成示例
打开 Windows 资源管理器,定位到该示例的语言特定的子目录之一。
根据所选的编程语言,双击 TransactionsCS.sln 或 TransactionsVB.sln 的图标,在 Visual Studio 中打开该文件。
在“生成”菜单上单击“生成解决方案”。
运行示例
打开命令提示窗口或 Windows 资源管理器,定位到包含所生成可执行文件的目录。
在命令行中键入 TxDemo.exe,或者在 Windows 资源管理器中双击该可执行文件的图标。
将会从数据库中读取当前值,并显示该值。
在“New Value”(新值)字段中输入一个大于等于 0、小于等于 10 的数字,然后单击“Post”(发送)按钮。
此时,应该显示“About to commit the transaction”(准备提交事务)这则消息。单击“确定”。“Current Value”(当前值)字段会立即使用输入的值进行更新。
在“New Value”字段中输入一个小于 0 或大于 10 的数字。单击“Post”按钮。
此时,应该显示“About to abort the transaction because the new value ([yourvalue]) is either <0 or >10.”(准备中止事务,因为新值 ([yourvalue]) 小于 0 或大于 10)这则消息。单击“确定”。请注意,“Current Value”字段不会发生更改。这是因为,在事务处理期间,当前值没有发生更改,但是,如果回滚该事务,该值会更改回原始值。
现在,使用“AutoPost”(自动发送)按钮和相同的数据执行此操作。您将注意到,在该演示中止事务后,会引发一个 COMException。这是为了通知 AutoComplete 执行中止操作。
卸载示例
在命令提示窗口中,定位到运行 msbuild.exe 或打开 .sln 文件时所在的目录。
根据所选的编程语言,键入 msbuild.exe TransactionsVB.vbproj /t:Clean 或 msbuild.exe TransactionsCS.csproj/t:Clean。此操作将会使用 /u 调用 regsvcs.exe 和 gacutil.exe,以便从 COM+ 目录和全局程序集缓存中移除示例文件。
在命令行中键入 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。