加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用ADO.Net进行查询的连接超时异常

发布时间:2020-12-15 17:43:34 所属栏目:百科 来源:网络整理
导读:更新:看起来查询不会抛出任何超时.连接超时. 这是执行查询的示例代码.有时,在执行耗时的查询时,会引发超时异常. 我不能使用任何这些技术: 1)增加超时 2)与回调异步运行它.这需要以同步方式运行. 请建议任何其他的技术,以保持连接活着,同时执行耗时的查询?
更新:看起来查询不会抛出任何超时.连接超时.

这是执行查询的示例代码.有时,在执行耗时的查询时,会引发超时异常.

我不能使用任何这些技术:
1)增加超时
2)与回调异步运行它.这需要以同步方式运行.

请建议任何其他的技术,以保持连接活着,同时执行耗时的查询?

private static void CreateCommand(string queryString,string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString,connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

解决方法

由于您使用的ExecuteNonQuery不返回任何行,您可以尝试这种基于轮询的方法.它以asyc方式执行查询(无回调)
但应用程序将等待(一段时间循环),直到查询完成.从 MSDN.这应该解决超时问题.请尝试一下

但是,我同意其他人的观点,您应该考虑更多关于优化查询以在30秒以内执行的操作.

IAsyncResult result = command.BeginExecuteNonQuery();

        int count = 0;
        while (!result.IsCompleted)
        {
            Console.WriteLine("Waiting ({0})",count++);
            System.Threading.Thread.Sleep(1000);
        }
        Console.WriteLine("Command complete. Affected {0} rows.",command.EndExecuteNonQuery(result));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读