日期:2014-05-17  浏览次数:20400 次

数据库连接问题打开关闭问题
有一个管理软件,在IIS上 随时都会出现连接用户过多这个问题,我想也许是我的数据库连接打开过后未关闭,我就每次SqlDataReader之后 我都把dr.close();但是 还是要出现这种情况 求解 求解决办法 急等中!!!

------解决方案--------------------
只要在某个用户对单个逻辑操作结束后就关闭连接应该是没有问题的。应该还是你代码中没有及时关闭连接的问题。可否把代码贴出来看看
------解决方案--------------------
全都补上异常处理,并且关闭。
你现在的代码出现异常,铁定是不会关闭连接的
------解决方案--------------------
什么操作系统
2003 , Vista,win 2008 都可以运行很多网站,连接很多人数
检查SqlHelper.SqlHelpDao.ExecuteReader
------解决方案--------------------
C# code

try
{
    ....
}
catch(Exception e)
{
    ....
}
finally
{
    dr.close();
}

------解决方案--------------------
using () {} 才是王道
------解决方案--------------------
不要用XP系统作为net软件开发的操作系统
------解决方案--------------------
用using嵌套try{}catch{}finally{}
------解决方案--------------------
探讨
C# code

try
{
....
}
catch(Exception e)
{
....
}
finally
{
dr.close();
}

------解决方案--------------------
SqlHelper.SqlHelpDao.ExecuteReader 就是调用一个抽象类中的静态方法

------解决方案--------------------
你是不是查询到sqldatareader的时候没有关闭数据连接呢?如下
查询时:
try
{
sqlconnection.Open();
return sqldataReader;
}
catch(Exception e)
{
....
}
finally
{
sqlconnection.close();
}
调用时:
try
{
....
}
catch(Exception e)
{
....
}
finally
{
dr.close();
}

------解决方案--------------------
如果是你自己写的数据库操作类,建议你可以参考那个sqlhelper.cs这个类来写。
------解决方案--------------------
把同时连接的数量设置大一点
------解决方案--------------------
try
{
....
}
catch(Exception e)
{
....
}
finally
{
dr.close();
}

------解决方案--------------------
把数据操作的部分拿出来,写成公用的部分,将数据连接的打开与关闭都写进去

没此链接数据库的时候调用该公用的方法,以确保数据连接在处理完数据之后的状态是Close的
------解决方案--------------------
5楼正解

一般开关都放在using块里,或者是try {} cacth{}块里
------解决方案--------------------
public List<Model.Brands> queryAll(string brandsname)
{
List<Model.Brands> list = new List<Model.Brands>();
Model.Brands brands = null;
SqlDataReader dr = SqlHelper.SqlHelpDao.ExecuteReader(Constance.CONN, CommandType.Text, "select * from Brands where Brands_Name like '%" + brandsname + "%' or Brands_Py like '%" + brandsname + "%' and IsPublicMark= 1 order by Brands_Name", null);
try
{
while (dr.Read())
{

brands = new Model.Brands();
brands.Brands_id = Convert.ToInt32(dr["Brands_id"].ToString());
brands.Brands_Inc = dr["Brands_Inc"].ToString();
brands.Brands_Name = dr["Brands_Name"].ToString();
brands.Brands_Py = dr["Brands_Py"].ToString();
brands.IsPublicMark = dr["IsPublicMark"].ToString();
list.Add(brands);

}
catch()
{
}