当前位置:编程学习 > C#/ASP.NET >>

有池连接都已被使用并已达到最大池大小

我的绑定语句为   string sql="select userid,username from lguser ";
ds=Db.selectDS(sql);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
                Db.close();
Db为
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;

namespace zgcydd
{
/// <summary>
/// Db 的摘要说明。
/// </summary>
public  class Db
{
public Db()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

private static SqlConnection conn;
public static DataSet selectDS(string sql){
conn=new SqlConnection(ConfigurationSettings.AppSettings["connString"]);
conn.Open();
SqlDataAdapter sda=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();

try
{
sda.Fill(ds);

}
catch(SqlException e)
{
throw new Exception(e.Message);
}
return ds;
}

public static SqlDataReader selectDR(string sql){
conn=new SqlConnection(ConfigurationSettings.AppSettings["connString"]);
SqlDataReader reader;
SqlCommand cmd=null;
try
{
conn.Open();
cmd=conn.CreateCommand();
cmd.CommandText=sql;
    reader=cmd.ExecuteReader();
}
catch(SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();

}
return reader;
}

public static int execSql(string sql){
int rows=-1;//受到影响的行数
conn=new SqlConnection(ConfigurationSettings.AppSettings["connString"]);
SqlCommand cmd=null;
try
{
conn.Open();
cmd=conn.CreateCommand();
cmd.CommandText=sql;
rows=cmd.ExecuteNonQuery();
}
catch(SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
conn.Close();
}
return rows;
}

public static void close(){
conn.Close();
}


}
}



显示错误为:说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。

源错误: 


行 29:  public static DataSet selectDS(string sql){
行 30:  conn=new SqlConnection(ConfigurationSettings.AppSettings["connString"]);
行 31:  conn.Open();
行 32:  SqlDataAdapter sda=new SqlDataAdapter(sql,conn);
行 33:  DataSet ds=new DataSet();
 

源文件: c:\inetpub\wwwroot\zgcydd\Db.cs    行: 31 
解决方法:谢谢高手!! --------------------编程问答-------------------- 没有细看,但出现这种问题多半是连接没有释放
要在使用前打开连接(实际可能是从连接池中获取)
用完立即关闭,调用.Close(),使其释放回连接池 --------------------编程问答-------------------- 资源没有得到有效的释放,
SqlDataReader   reader; 
reader应该Close();
另:连接池大小可以设/

--------------------编程问答-------------------- 用完的conn记得Close
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,