繁体   English   中英

在单个连接中使用多个事务

[英]using multiple transactions in single connection

基本上是一种修补机制

这是我在做什么:

  1. 打开一个SQL连接。
  2. 开始交易。
  3. 更新数据库中有关该软件版本的记录。
  4. 使用相同的连接在同一数据库上执行更多查询。
  5. 下载15至20 MB的文件。
  6. 通过使用相同的连接执行选择查询。
  7. 提交交易。
  8. 关闭交易。

此序列导致SQL Connection超时问题,因为下载文件花费时间。 问题是我只能在下载文件之后而不是在此之前提交事务。

C#编写代码。 使用的数据库是SQLCE这是代码的一部分:

SqlCeConnection conn = new SqlCeConnection("ConnectionString");

conn.Open();
SqlCeTransaction ts = conn.BeginTransaction();

//A method call executes all the methods that with parameters
(string sqlQuery, ref SqlCeConnection conn, SqlCeTransaction ts)
{
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = conn;
cmd.Transaction = ts;
cmd.CommandText = sqlQuery;
cmd.ExecuteNonQuery();
}

//A method call downloads the file of 15 to 20 MB

//A method executes a select query that returns the version of the software by using same SQL connection.

//The above query gives the error of SQl connection timeout 
ts.Commit();
conn.Close();

谁能帮我解决问题

这就是我所做的。

我将相同的连接和事务对象传递给正在下载文件的方法。 在那种方法中,我在下载文件的循环中执行了一个简单的选择查询。 这有助于保持连接和事务活动。 在这里,即使您的Internet连接速度很慢,也不会受到影响,因为在每个循环中都会触发SQl查询并保持连接处于活动状态。

手动设置命令超时。

cmd.CommandTimeout = 180;

本示例将超时设置为180秒(3分钟)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM