如何在 SQL Server 2005 中管理多个事务

发布于 2024-11-30 19:32:45 字数 758 浏览 0 评论 0原文

我正在用 C# 开发一个带有 SQL Server 2005 后端的桌面应用程序。

我想将行插入到两个表中,在 table1 中将保存一行,在 table2 中一次将保存 100 多行。

我希望在保存正在进行时以及保存期间,如果电源故障或由于任何原因程序终止,则不应将不完整的事务保存在数据库中;但如果事务成功完成,则应将其保存到数据库中。

我正在使用 Connection.BeginTransaction() 方法

 clsData dSave = new clsData();
 dSave.Open(); // 
 System.Data.SqlClient.SqlTransaction tr = dSave.Connection.BeginTransaction();

clsData 是一个类,其中声明了一些变量,例如 SqlConnectionSqlCommand,SqlAdapter,在该类中声明了一个名为 Connection 的变量,并声明了一个方法 Open() 在打开连接的此类中声明。

困难在于,在大约 10-20 个命令之后,tr.Connection 突然变为 null,而我的连接仍然处于打开状态。

任何人都可以帮助我解决这个问题。

I'm developing a desktop application in C# with a SQL Server 2005 backend.

I want to insert rows into two tables, in table1 one row will be saved and in table2 more than 100 rows will save at a time.

I want that while saving is going on and between it if power fails or due to any reason program terminates then that incomplete transaction should not saved in the database; but if transaction completes successfully, then it should be saved to the database.

I'm using Connection.BeginTransaction() methods

 clsData dSave = new clsData();
 dSave.Open(); // 
 System.Data.SqlClient.SqlTransaction tr = dSave.Connection.BeginTransaction();

clsData is a class in which some variables are declared like SqlConnection, SqlCommand, SqlAdapter, a var called Connection is declared in this class and a method Open()
is declared in this class which opens connection.

Difficulty is that after some 10-20 commands, tr.Connection suddenly becomes null, where as my connnection is still open.

Anybody can help me about this problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖上得阳光 2024-12-07 19:32:45
  • 使用存储过程调用
  • 使用 XML 或表值参数传入数据
  • 管理 SQL Server 中的事务

不要在客户端事务中对数据库服务器进行 100 多次调用

  • Use a stored procedure call
  • Use XML or table valued parameters to pass in the data
  • Manage the transaction in SQL Server

Don't make 100+ call to the database server in a client side transaction

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文