首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-09-22 
唉,最后一步了!C#winform程序在公司测试没有任何问题,到客户现场安装老是弹出一个错误提示Timeout expire

唉,最后一步了!
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();
[解决办法]
探讨
你的想法不对
虽然你只要四十多个科室

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

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

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

热点排行