读书人

唉最后一步了!该如何解决

发布时间: 2012-09-22 21:54:54 作者: rapoo

唉,最后一步了!
C# winform程序在公司测试没有任何问题,到客户现场安装老是弹出一个错误提示"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.",网上说是数据库连接没关闭,可是我组查了代码,每一个连接数据库的类中都关闭了数据库连接,都用了 using (SqlConnection con = SqlHelper.GetConnection())
try
{
con.Open();
string cmdSelect = "select room_id,bed_Name,sickName,sex,NurLevel,illState,Cared,Wcfs from BASE_BED where hushisiteID='" + Init.GetHushisiteIdByIp() + "'order by room_id,bed_Name";
using (SqlCommand cmd = new SqlCommand(cmdSelect, con))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{....
.}
}
}这类语法,可是软件运行时间久了还是会出现上面的错误,请教各位高手。

[解决办法]
使用了DataReader,你即使离开Using语句块,连接还是被保持着,否则DataReader怎么读取数据?
[解决办法]
(SqlDataReader dr = cmd.ExecuteReader())
对 这里 少个参数
using (SqlDataReader readerTemp = cmdTemp.ExecuteReader(CommandBehavior.CloseConnection))
[解决办法]
最简单的办法:把所有的con.Open();换成下面这句

C# code
if (con.State==ConnectionState.Closed) con.Open();
[解决办法]
探讨
你的想法不对
虽然你只要四十多个科室

可是按照你这种程序风格
每个客户端都要开若干个连接

这样加起来,就是几千个连接。。。

你应该参考楼上的话
用一个主类把连接封装,全局只用这一个连接。。。

读书人网 >C#

热点推荐