访问量 多的时候,数据库老是 连不上,,,大家看看是不是哪里没有关闭照成的。
 //当前连接的是第几个。
        static int count = 0;        //最大连接量
        static int maxCount = 300;
        static SqlConnection[] sqlConns = new SqlConnection[maxCount];        //自己创建自己
        static SqlConnections myConn = new SqlConnections();        //初始化
        private SqlConnections()
        {
            for (int i = 0; i < maxCount; i++)
            {
                sqlConns[i] = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ADOStr"].ToString());
            }
        }        //根据条件来获取不同的表,与字段。
        public static DataTable GetDataTable(String sqlTest, String tableName)
        {
            try
            {
                DataSet myDS = new DataSet();
                SqlDataAdapter myAdapater = new SqlDataAdapter(sqlTest, SqlConnections.GetSQLConnection());
                myAdapater.Fill(myDS, tableName);
                return myDS.Tables[tableName];
            }
            catch (SqlException sqlE)
            {
                return null;
            }
        }        // 获取数据库连接
        public static SqlConnection GetSQLConnection()
        {
            try
            {
                try
                {
                    sqlConns[count].Close();
                }
                catch (Exception eeX)
                {
                    sqlConns[count].Close();
                }
                return sqlConns[count];
            }
            finally
            {
                //当前个数自加。。
                if (count == (maxCount - 1))
                {
                    count = 0;
                }
                else
                {
                    count++;
                }
            }
        }

解决方案 »

  1.   

     try
      {
     DataSet myDS = new DataSet();
    using (SqlConnection connection = 
            SqlConnections.GetSQLConnection()){
       SqlDataAdapter myAdapater = new SqlDataAdapter();
           myAdapater.SelectCommand = new SqlCommand(
                sqlTest, connection);
     myAdapater.Fill(myDS, tableName);
      return myDS.Tables[tableName];
      
    }
     }
      catch (SqlException sqlE)
      {
      return null;
      }
     
     
      

  2.   

    +1 如此还是使用Using,让系统自己去关闭吧
      

  3.   

    try
    {
    DataSet myDS = new DataSet();
    using (SqlConnection connection = 
    SqlConnections.GetSQLConnection()){
    SqlDataAdapter myAdapater = new SqlDataAdapter();
    myAdapater.SelectCommand……
      

  4.   

    dataset 和 dataadpter 不需要关闭吗只用 using 能否全部关闭所有。????请给位给予详细解答
      

  5.   

    为什么有两个try
      {
      try
      {为什么不用微软提供的SQLHELPER。?
      

  6.   

    为什么不用微软提供的SQLHELPER。?
      

  7.   

    USING及时释放
    public abstract class DbHelperSQL
        {
            //数据库连接字符串(web.config来配置)
            //<add key="ConnectionString" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" />        
            protected static string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
            public DbHelperSQL()
            {            
            }        #region 公用方法        public static int GetMaxID(string FieldName,string TableName)
            {
                string strsql = "select max(" + FieldName + ")+1 from " + TableName;
                object obj = GetSingle(strsql);
                if (obj == null)
                {
                    return 1;
                }
                else
                {
                    return int.Parse(obj.ToString());
                }
            }
            public static bool Exists(string strSql, params SqlParameter[] cmdParms)
            {
                object obj = GetSingle(strSql, cmdParms);
                int cmdresult;
                if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                {
                    cmdresult = 0;
                }
                else
                {
                    cmdresult = int.Parse(obj.ToString());
                }
                if (cmdresult == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            #endregion
    #region  执行简单SQL语句        /// <summary>
            /// 执行SQL语句,返回影响的记录数
            /// </summary>
            /// <param name="SQLString">SQL语句</param>
            /// <returns>影响的记录数</returns>
            public static int ExecuteSql(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {                
                    using (SqlCommand cmd = new SqlCommand(SQLString,connection))
                    {
                        try
                        {        
                            connection.Open();
                            int rows=cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch(System.Data.SqlClient.SqlException E)
                        {                    
                            connection.Close();
                            throw new Exception(E.Message);
                        }
                    }                
                }
            }
    /// <summary>
            /// 执行一条计算查询结果语句,返回查询结果(object)。
            /// </summary>
            /// <param name="SQLString">计算查询结果语句</param>
            /// <returns>查询结果(object)</returns>
            public static object GetSingle(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    using(SqlCommand cmd = new SqlCommand(SQLString,connection))
                    {
                        try
                        {
                            connection.Open();
                            object obj = cmd.ExecuteScalar();
                            if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
                            {                    
                                return null;
                            }
                            else
                            {
                                return obj;
                            }                
                        }
                        catch(System.Data.SqlClient.SqlException e)
                        {                        
                            connection.Close();
                            throw new Exception(e.Message);
                        }    
                    }
                }
            }
            /// <summary>
            /// 执行查询语句,返回SqlDataReader
            /// </summary>
            /// <param name="strSQL">查询语句</param>
            /// <returns>SqlDataReader</returns>
            public static SqlDataReader ExecuteReader(string strSQL)
            {
                SqlConnection connection = new SqlConnection(connectionString);            
                SqlCommand cmd = new SqlCommand(strSQL,connection);                
                try
                {
                    connection.Open();    
                    SqlDataReader myReader = cmd.ExecuteReader();
                    return myReader;
                }
                catch(System.Data.SqlClient.SqlException e)
                {                                
                    throw new Exception(e.Message);
                }            
                
            }        
            /// 执行查询语句,返回DataSet
            public static DataSet Query(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        connection.Open();
                        SqlDataAdapter command = new SqlDataAdapter(SQLString,connection);                
                        command.Fill(ds,"ds");
                    }
                    catch(System.Data.SqlClient.SqlException ex)
                    {                
                        throw new Exception(ex.Message);
                    }            
                    return ds;
                }            
            }
    }
      

  8.   

    dataset是断开试连接,取完数据自动断开连接,可能是内存不够吧。
      

  9.   

    最好用完让自动关闭连接,这样可以不占内存。for循环下面用using,可以尝试一下