我的程序总是运行了一段时间之后界面就卡住,之后就提示说:
超时时间已到。超时时间已到 但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用 并且达到了最大池大小。我的代码是这样的:连接数据库的语句:
public static int GetCount(string sql, SqlParameter[] array)
{
    SqlCommand cmd = handle(sql, array);
    return cmd.ExecuteNonQuery();
}
public static SqlDataReader GetReader(string sql, SqlParameter[] array)
{
    SqlCommand cmd = handle(sql, array);
    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}public static SqlCommand handle(string sql, SqlParameter[] array)
{
    using (SqlConnection con = new SqlConnection(strConn)) 
    {
       con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = sql;
        if (array != null)
        {
           foreach (SqlParameter item in array)
           {
              if (item.Value == null)
              {
                  item.Value = DBNull.Value;
              }
              cmd.Parameters.Add(item);
            }
         }
          return cmd;
      }
}
获取数据库数据的代码:
public Users GetOneUser(int UserID)
{
   SqlParameter[] array = new SqlParameter[]
   {
      new SqlParameter("@Id",UserID)
   };
   using (SqlDataReader reader = help.GetReader("select * from Users where UserID = @Id", array)) 
   {
        if (reader.Read())
        {
            Users user = new Users();
            user.UserID = Convert.ToInt32(reader["UserID"]);
            return user;
        }
   }
        return null;
}

请大家帮我看看问题是不是出在这里,谢谢了!

解决方案 »

  1.   

    你是频繁的new SqlConnection吗,如果是,就创建I个全局的connection,其他地方使用这个实例,不要频繁创建连接
      

  2.   


    这样的话就会产生那样的问题么是啊如果服务器有最大连接数限制的话就会这样,不close的话会占用大量资源
      

  3.   


    这样的话就会产生那样的问题么是啊如果服务器有最大连接数限制的话就会这样,不close的话会占用大量资源using (SqlConnection con = new SqlConnection(strConn))  有自动释放资源功能
      

  4.   

    个人觉得,如果频繁的读取或访问数据而且数据里大的话,少用SqlDataReader,因为SqlDataReader是一直和数据库建立连接直到数据读取完毕,当多个SqlDataReader一起用的时候肯定影响。
      

  5.   


    但是现在用都用了。用就用了,那你Reader完之后要Close就是拉。每个地方都要Close
      

  6.   


    但是现在用都用了。用就用了,那你Reader完之后要Close就是拉。每个地方都要Close有啊 都有用using来自动释放啊
      

  7.   


    但是现在用都用了。用就用了,那你Reader完之后要Close就是拉。每个地方都要Close有啊 都有用using来自动释放啊谁跟你说的using会自动Close..
    using只会自动dispose
      

  8.   

    每次连接记得操作完成之后要关闭,或者把连接语句放在using里面
      

  9.   


    谁让你这样写数据库连接的 啊,最好自己手动CLOSE掉,别老想靠系统去回收连接
    重头到尾没见到一个CLOSE你的代码