Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。

问题描述

做一个WinForm程序,算库龄,经常会出来超时错误(不是每次都有)数据库超时时间设置的是0,连接串超时时间也设置的是0,搞不清楚哪里出的问题求高手帮忙看下代码如下:publicstringGetStock(stringcInv,DateTimedtF,DateTimedtT){stringsql="";doubleiquan=0;doubleioquan=0;doubleiiquanF=0;doubleiiquanT=0;DataTabledtQuan=newDataTable();sql="selectisnull(sum(iQuantity),0)FROMSoerp_KC"+hostname+"wherebrdflag=0andcInvCName='"+cInv+"'";dtQuan=help.ExecuteDataTable(sql,help.getConnection(dbuf));if(dtQuan.Rows.Count>0)ioquan=Convert.ToDouble(dtQuan.Rows[0][0].ToString());sql="selectisnull(sum(iQuantity),0)FROMSoerp_KC"+hostname+"wherebrdflag=1andcInvCName='"+cInv+"'anddDate<'"+dtF+"'";dtQuan=help.ExecuteDataTable(sql,help.getConnection(dbuf));if(dtQuan.Rows.Count>0)iiquanF=Convert.ToDouble(dtQuan.Rows[0][0].ToString());if(iiquanF>ioquan)iiquanF=iiquanF-ioquan;elseiiquanF=0;sql="selectisnull(sum(iQuantity),0)FROMSoerp_KC"+hostname+"wherebrdflag=1andcInvCName='"+cInv+"'anddDate<'"+dtT+"'";dtQuan=help.ExecuteDataTable(sql,help.getConnection(dbuf));if(dtQuan.Rows.Count>0)iiquanT=Convert.ToDouble(dtQuan.Rows[0][0].ToString());if(iiquanT>ioquan)iiquanT=iiquanT-ioquan;elseiiquanT=0;if(iiquanT==0)iquan=0;elseiquan=iiquanT-iiquanF;returniquan.ToString("0.00");}publicSqlConnectiongetConnection(stringstrConn){SqlConnectioncon=newSqlConnection();try{con=newSqlConnection(strConn);}catch(Exception){MessageBox.Show("数据库连接出错!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}returncon;}publicDataTableExecuteDataTable(stringsqlSda,SqlConnectionconn){if(conn.State!=ConnectionState.Open)conn.Open();DataTabledt=newDataTable();using(SqlCommandcmd=newSqlCommand(sqlSda,conn)){try{//cmd.CommandTimeout=0;cmd.CommandType=CommandType.Text;cmd.CommandText=sqlSda;SqlDataAdapterda=newSqlDataAdapter(cmd);da.Fill(dt);da.Dispose();}catch(Exceptionex){MessageBox.Show(ex.ToString());}conn.Close();returndt;}}

解决方案

解决方案二:
数据库超时时间设置为什么要设置为0??
解决方案三:
引用1楼duanzi_peng的回复:

数据库超时时间设置为什么要设置为0??

原本以为是设置时间太短,所以改成了0,后来发现还是会报错
解决方案四:
首先,你要尽量保证关系数据库在应用程序的“附近”。例如就在同一个机器上,或者是在同一个小的局域网内(同时要检查局域网的通讯质量如何)。其次,检查你的应用能不能用到索引。避免全表遍历数据。再次,看看没有没有可能某些“读”操作使用脏读(withnolock)方式。最后,看看业务逻辑设计有没有冗余和“故意反复”的流程,数据表的结构设计有没有蹩脚地方,业务逻辑上有没有可能更为专业(我是指业务出发)的重构设计。例如一个真正传统的库存系统,每天夜间做日结,然后第二天的数据是使用前一天的日结数据加上当天的明细数据再做日结,这样各种查询基本上都是查日报表而不是查明系。而有些不懂业务的程序员,只知道用明细去做各种统计查询,这就是因为不了解传统的统计工作而出现的“过分技术化”的问题。
解决方案五:
引用3楼sp1234的回复:

你的代码太多了,而且也没有什么“意思”,就不仔细看了。说点简单的起码的“安全规则”:首先,你要尽量保证关系数据库在应用程序的“附近”。例如就在同一个机器上,或者是在同一个小的局域网内(同时要检查局域网的通讯质量如何)。其次,检查你的应用能不能用到索引。避免全表遍历数据。再次,看看没有没有可能某些“读”操作使用脏读(withnolock)方式。最后,看看业务逻辑设计有没有冗余和“故意反复”的流程,数据表的结构设计有没有蹩脚地方,业务逻辑上有没有可能更为专业(我是指业务出发)的重构设计。例如一个真正传统的库存系统,每天夜间做日结,然后第二天的数据是使用前一天的日结数据加上当天的明细数据再做日结,这样各种查询基本上都是查日报表而不是查明系。而有些不懂业务的程序员,只知道用明细去做各种统计查询,这就是因为不了解传统的统计工作而出现的“过分技术化”的问题。

我说了,同样的查询,有时候报错,有时候不报错产品的数据库是一个完善的产品,不存在重构设计什么的我只是需要做一个报表出来麻烦指点一下具体的错误,不然说这么多一点意义对我一点用没用
解决方案六:
一般超时时间和连接时间不是不哟年管按照默认的就行吗?除非有必要才修改超时时间。你有无直接用你的报表sql去测试查询时间?
解决方案七:
引用5楼smthgdin的回复:

一般超时时间和连接时间不是不哟年管按照默认的就行吗?除非有必要才修改超时时间。你有无直接用你的报表sql去测试查询时间?

我用报错的Sql查询过,也就六七秒,所以搞不明白为什么会报错

时间: 2024-11-04 17:25:54

Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。的相关文章

网站经常出现&amp;amp;quot;超时时间已到。在操作完成之前超时时间已过或服务器未响应&amp;amp;quot;的解决...

问题描述 各位大侠,如题:网站经常出现"超时时间已到.在操作完成之前超时时间已过或服务器未响应"的解决.怎么根本解决这个问题呢???我在网上找了些资料.也尝试过了,好像没有用呀,一天下来网站好几次都报这样的错误,然后我回收下应用池就好了.根据网上的资料我现在已在webcofig.ini里添加<system.web><httpRuntimemaxRequestLength='102400'executionTimeout='720'/></system.we

ASP.NET 生成报表,超时时间已到。在操作完成之前超时时间已过或服务器未响应

问题描述 问题描述:系统每季度需生成报表数据,以前都没问题,这季度生成报表数据时提示超时时间已到.在操作完成之前超时时间已过或服务器未响应错误,初步分析原因是本季度生成的数据量很大,按照网上大家给的办法都没没有解决,请各位大侠帮忙.本人已尝试的设置:1.<httpRuntimemaxRequestLength="102400"executionTimeout="720"/>2.数据库服务器端连接超时等设置都是最大值但此方法都不管用,CommandTime

System.Data.SqlClient.SqlException 超时时间已到

错误信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应. (错误详细信息等于 很可能由 IncludeExceptionDetailInFaults=true 创建的 Except

晕,今天打开某个网页怎么都是&amp;amp;quot;超时时间已到&amp;amp;quot;

问题描述 ErrorMessage:超时时间已到.在操作完成之前超时时间已过或服务器未响应.ErrorTrace:在System.Data.SqlClient.SqlConnection.OnError(SqlExceptionexception,BooleanbreakConnection)在System.Data.SqlClient.SqlInternalConnection.OnError(SqlExceptionexception,BooleanbreakConnection)在Syst

Spring事务超时时间可能存在的错误认识

1.先看代码 1.1.spring-config.xml Java代码   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>    

C#写的一个串口通信的窗体程序,运行几个小时就出错,提示“操作已超时”或“已停止工作”,请问怎么解决

问题描述 C#写的一个串口通信的窗体程序,运行几个小时就出错,提示"操作已超时"或"已停止工作",请问怎么解决?求高手解答 解决方案 解决方案二:用日志记录出错信息以及出错的位置,然后再具体分析原因解决方案三:看下你做了一些什么操作解决方案四:就是直接打开串口接收数据,并将一些特定的语句写入文件.就这样运行一段时间就出错了.解决方案五:能贴代码吗关键是报什么错解决方案六: 解决方案七:麻烦帮忙看看怎么回事,谢谢了解决方案八:把有可能会抛异常的点,都放到trycatc

已知客户的到达时间T和服务该客户所需时间 计算所有客户的平均等待时间

题目概述 假设有N个客户在K个窗口等待服务. 每个窗口可以容纳一个人, 因此其他客户需要进行等待. 当某个客户服务完成后, 下一个客户可以进入该窗口并被服务. 我们假设没有窗口会被占用1小时以上. 现在我们给出每个客户的到达时间T和服务该客户所需要的时间P, 请计算所有客户的平均等待时间. 输入 每个输入文件包含一个测试用例. 每个测试用例, 第一行包含两个整数N( <= 1000)和K( <= 100). 其中N表示客户的数量, K表示窗口的数量. 接下来的N行, 包含两个时间: HH:MM

Win7系统分区后没显示容量且提示“信号灯超时时间已到&quot;怎么办

  1.硬盘只显示盘符,且没有具体容量信息; 2.双击分区,报错提示:无法访问E:. 信号灯超时时间已到; 3.进入磁盘管理中查看,显示正常; 4.建议先检测硬盘,确认是否为硬盘故障.

日期加减-c++如何实现时间的加减操作?

问题描述 c++如何实现时间的加减操作? c++如何实现时间的加减操作,比如有一个时间2015-03-30 23:20:20,我想减去一个月,加上2小时,如何实现??望高手赐教,代码越简洁越好! 解决方案 分别单独处理时间和日期 如果时间处理时,发现要对日期进行变化,则调用日期变化的功能.日期变化的功能,其实也不难.就是麻烦. 需要判断是否是闰年?然后按 1.3.5.7.8.10.12 和 除了2月之外的其它月进行处理. 解决方案二: 可以自己写一个时间类,然后重载加减运算符 解决方案三: CT