急,asp.net超时时间已到。在从池中获取连接之前超时时间已过。

各位帮帮忙!先谢谢了...

提示:
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

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

总是提示这个问题,是因为connection和datareader没有关闭吗?
如果是这样,我应该怎么关闭他们,还是不用关?
static public SqlDataReader return_datareader(string sql)
{
SqlConnection con = DB.createcon();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}

我刚学这个,我只要刷新一下,企业管理器里面的"进程信息"里就是多一个进程,我刷新100多次,满了就报错...弄的我都不知道怎么在继续下去了,各位帮帮忙啊???

有没有什么好的解决办法,或者能不能写个很简单很简单的程序给我看看,只不要每次刷新一下,进程信息就加一个就行.请各位指教!不要又从网上复制一长篇的,比较急,谢谢各位了!!!

static public SqlDataReader return_datareader(string sql)
{
SqlConnection con = DB.createcon();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //这里调用关闭 Connection
return sdr;
}
public void ReadData()
{
SqlDataReader da = return_datareader("select * from table1");
while (da.Read())
{
//这里读取数据
}
da.Close(); //这里关闭Read
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-20
DataReader和Connection必须要关闭的,在使用后。

楼主给的代码中,返回了DataReader,所以在使用后要将这个DataReader关闭。
但是楼主给的代码中有特殊情况,是 cmd.ExecuteReader() 方法并没有指定 CommandBehavior.CloseConnection 参数,所以DataReader关闭后数据库连接并不会关闭,需要再关闭一次。
所以推荐楼主使用 cmd.ExecuteReader(CommandBehavior.CloseConnection),这样在使用后只要关闭DataReader后数据库连接也会自动关闭了。
第2个回答  2008-08-20
记住,每次open都要close。比如:
static public SqlDataReader return_datareader(string sql)
{
SqlConnection con = DB.createcon();
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader sdr = cmd.ExecuteReader();
con.Close();//注意这里
return sdr;
}
第3个回答  2008-08-20
“超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。”的问题。
解决的途径就是使用DataAdapter的Fill来填充DataTable,然后从DataTable中读取数据。
DataTable是内存中的数据表,是独立于数据源的,所以在读取其中数据时,无需建立数据库的连接,这样就避免了连接的占用。
第4个回答  2008-08-20
Dim cmd As OleDbCommand = New OleDbCommand (SQLcmd, conn)
Dim rd As OleDbDataReader

Create_Rd = cmd.ExecuteReader(CommandBehavior.CloseConnection)

//在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭。
第5个回答  2008-08-20
用一下try
catch
就不会出现超时。。。。。
相似回答