"超时间时间已到。在操作完成之前超时时间已过或服务器未响应"的解决办法

     一个错误提示“ 超时间时间已到。在操作完成之前超时时间已过或服务器未响应”,简直把人气死了,最后发现竟然是少了一句Close();

    初学Asp.Net的人经常会忘掉关闭数据库连接,这一点非常重要。把我的发现写出来,希望出现同样问题的人可以参考一下。

 

在做一个相册程序(类似于163的相册,希望把自己的照片管理起来)时出现的问题,按照正常的方法进行数据访问,在调试时不知什么时候发现update一条数据竟然会“超时”,不清楚原因的情况下,检查是不是SQL出问题了,怎么会超时呢?在出现错误提示“ 超时间时间已到。在操作完成之前超时时间已过或服务器未响应”时,同时用SQL查询分析器执行这一句,同样无响应,所以就更觉得SQL有问题了,但是关闭ASP.NET程序后,又一切正常了。于是从网上查关于超时的解决办法,很多都给出的是修改默认的超时时间属性,实际上完全没有必要,在数据量小的情况下,正常根本就不可能超时。

     后来,终于查到了一条,得到是“如果数据量小还超时的话,那程序写得太烂了,优化程序吧。”,作为初学的非专业人士,我只有检查代码了,反复检查也没发现问题,因为就几条select,insert,update语句,而且都有where选择很小的范围,多数情况是操作一条记录。最后无奈,只有把出错的这一页aspx一点一点删除,依次检查问题出在什么地方,最后发现是由于在DataList中使用了ImageButton显示(使用另一个aspx动态显示数据库的image)造成的,因为当前的记录正在使用,而随后的程序又要对这条记录进行编辑,所以记录被占用,一直到超时结束。

    经过反复检查,真正的问题出在了用于动态显示image的ASPX上,进行了select查询数据连接,而最后忘了Close(),加上一句关闭数据连接,再调试,一切OK。

 

总结:

1、一般情况下,不会用到编辑当前正在占用的记录,所以打开数据连接后,不使用close也没关系,但如果遇到上面所说的情况就必须使用close了。所以需要养成一种习惯,只要有open就要有对应的close,以保证不出错。

2、如果出错,那一定是程序问题,哪怕是查询速度慢,因为SQL的处理速度是足够快的。

3、最好将所有的数据库操作放到一个类中,用于网站中所有页而引用,而不要在每个ASPX中打开数据库连接,因为这样很容易就忘了close之类的操作了。再者,全放到一个CS类文件中,便于修改与检查。当然最好是给操作数据在类加一个参数,用于传递SQL语句,这样才灵活。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值