Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This ma

连接池暴蹦....
在运行程序的时候:

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.
第一感觉就是连接池爆了
        检查发现
在函数
    public SqlDataReader ddlbind()
    {
        string sqlstr = "select distinct case  flag when   'N' then '离职' when 'Y' then '在职' END  as Workflag from Flag";
         SqlConnection sqlcon = new SqlConnection(PublicVar.strCon_SHATDB);
         SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);

         sqlcon.Open();
        return sqlcom.ExecuteReader();
    }

    public SqlDataReader ddlbinddepat()
    {
        string sqlstr = "select description from Dept where DeptCode in('PRD_2','PRD_3')";
        SqlConnection sqlcon = new SqlConnection(PublicVar.strCon_SHATDB);
        SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);
        sqlcon.Open();
        return sqlcom.ExecuteReader();
    }

没有关闭数据库的连接? 就赶紧写了一个关闭的sqlcon.Close(); 运行没有效果,很简单都已经返回SqlDataReader 了(当然不行)
于是想到用一个SqlDataReader 的对象来接收
        SqlDataReader dr = sqlcom.ExecuteReader();
        sqlcon.Close();
        return dr;
是关闭了,但没有bind的数据没有了,因为关闭了.
........................
感觉返回SqlDataReader 很耗资源,既然此路不通,我走返回datetable,故在数据访问类里面新增一个
函数
  public static DataTable Query(string strSql)
        {
            Open();
            using (SqlDataAdapter dap = new SqlDataAdapter(strSql, MyConnection))
            {
                using (DataTable dt = new DataTable())
                {
                    dap.Fill(dt);
                    Close();
                    return dt.DefaultView.Table;
                }
            }
        }
    public DataTable ddlbind()
    {
        string sqlstr = "select distinct case  flag when   'N' then '离职' when 'Y' then '在职' END  as Workflag from Flag";
        return DataAccess.DataAccessSHDB.Query(sqlstr);
    }
    public DataTable ddlbinddepat()
    {
        string sqlstr = "select description from Dept where DeptCode in('PRD_2','PRD_3')";
        return DataAccess.DataAccessSHDB.Query(sqlstr);
    }

调试OK ....未完

原因何在?
using new.....

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值