/// <summary>
///许定义的类:连接与断开数据库
/// </summary>
public class ConnectionDatabase
{
    //String strConnection = ConfigurationSettings.AppSettings["TKPU"]; // web.config 定义的数据库连接字符串
    String strConnection = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["dtzrc_888CSPC"].ConnectionString;    public SqlConnection objConnection;    public void Connect() //打开数据库
    {
        if (objConnection == null)
            objConnection = new SqlConnection(strConnection);        if (objConnection.State == ConnectionState.Closed)
            objConnection.Open();
    }    public void Disconnect() 关闭数据库
    {        objConnection.Close();
        
    }}ConnectionDatabase.Connect();
.............
      //操作数据库代码
..............
ConnectionDatabase.Disconnect();我用这代码用表单自动连续提交数据的时候,开始速度很快,到后来就越来越慢,用浏览器打开这个网站首页都很慢,时候有时还会出现
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。源错误: 行 27: 
行 28:         if (objConnection.State == ConnectionState.Closed)
行 29:             objConnection.Open();
行 30:     }
行 31: 

解决方案 »

  1.   

    IIS重启一下之后 ,速度又上来了,为什么?
      

  2.   

    public void Disconnect() 关闭数据库
        {        objConnection.Close();
    objConnection.Dispose();
            
        }
      

  3.   

    连接没关闭, 消耗资源过多 
    看看数据库操作类sqlhelper. 
    连接要及时释放。看看数据库连接数 
    using(SqlConnection con = new SqlConnection(_connectionString)) 

      string sql= ""; 
      SqlCommand cmd = new SqlCommand(sql, con);
      cmd.SelectCommand.CommandTimeout = 1000;  
      cmd.Parameters.AddWithValue("@Name", ""); con.Close(); 

     
      

  4.   

    原来是 SqlCommand 对象没有关闭