[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2619字,纯文字阅读大概需要4分钟。
内容图文
![[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应](/upload/InfoBanner/zyjiaocheng/917/22a5380540b841809ee2677538389aae.jpg)
随着数据库数据的不断增大,查询时间也随之增长。而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s。
所以在查询数据的时候,程序会出现 “超时时间已到。在操作完成之前超时时间已过或服务器未响应” 异常。
经检查后发现,这是因为页面在读取数据库中的数据时耗时太长,超过了默认的30秒。所以报出了以上错误,解决该问题的方法是:
一,优化sql语句,提高查询速度
二,延长sql超时的时间设置
最好的方法当然是第一种了,这才是治本的方法。但sql优化可不是一件简单的活,具体的环境有不同的方法。本章主要看一下如何通过第二种方法来解决问题。
1,首先设置sql的执行超时时间。
如果我们的sql是直接使用SqlCommand对象来执行的,那么可以设置SqlCommand的CommandTimeout属性的值。
比如:
using (SqlCommand cmd = new SqlCommand(SQLString, connection)) { cmd.CommandTimeout=180 }
这样我们就设置了cmd的超时间时间是180秒。
注意:SqlCommand.CommandTimeout属性的单位为秒,默认值是30。
如果我们的sql是利用SqlDataAdapter对象来获取数据集合,那么我们还可以分别通过以下方法设置SqlCommand的超时时间。
using (SqlConnection connection = GetConnection()) { …… SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand.CommandTimeout = 180;//设置查询sql的超时时间 sqlDA.InsertCommand.CommandTimeout = 180;//设置插入sql的超时时间 sqlDA.UpdateCommand.CommandTimeout = 180;//设置修改sql的超时时间 sqlDA.DeleteCommand.CommandTimeout = 180;//设置删除sql的超时时间 …… }
也许大家在有些网站上看到以下解决方法
1),在数据库的连接字符串中添加超时时间设置,如下:
SqlConnection con = new SqlConnection'server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=180'
但我有测试过,无效,也有可能是我的测试方法错误吧!!!
2),设置SqlConnection对象的超时时间。
该方法是肯定行不通了,因为SqlConnection的ConnectionTimeout属性根本就是个只读属性,不允许设置值。从它的定义就可以看出来了,定义如下:
// //摘要: //获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。 // //返回结果: //等待连接打开的时间(以秒为单位)。默认值为 15 秒。 // // 异常: //System.ArgumentException: //所设置的值小于 0。 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ResDescription("SqlConnection_ConnectionTimeout")] public override int ConnectionTimeout { get; }
2,设置asp.net请求的超时时间。
在上面的设置中我们有处理了sql的超时时间,但可能你的设置还是无效。这是为什么呢?因为你还没有设置asp.net请求的超时时间。
要如何设置asp.net请求的超时时间呢?修改web.config的httpRunTime节即可,示例如下:
<system.web> <httpRuntime executionTimeout="180" /> </system.web>
其中httpRuntime属性与executionTimeout属性的意思分别如下:
httpRuntime:配置 ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求。
executionTimeout:设置asp.net关闭前允许发生的上载秒数
设置完这两步,我们的问题才算的真正的解决了。
内容总结
以上是互联网集市为您收集整理的[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应全部内容,希望文章能够帮你解决[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。