C#MySqlConnection不会关闭

Rob*_*b R 2 c# mysql connection

我有一个应用程序,触发mysql命令(查询)"显示数据库",查询工作并正确返回但我无法关闭我的连接.我使用的用户同时允许24个连接,所以问题突然出现在我的程序中,但是将允许的连接减少到2表明我甚至无法关闭第一个查询(不在循环中).代码如下:

    protected override Dictionary<string, Jerow_class_generator.Database> loadDatabases()
    {
        MySqlConnection sqlCon = new MySqlConnection(this.ConnectionString);
        sqlCon.Open();

        MySqlCommand sqlCom = new MySqlCommand();
        sqlCom.Connection = sqlCon;
        sqlCom.CommandType = CommandType.Text;
        sqlCom.CommandText = "show databases;";

        MySqlDataReader sqlDR;
        sqlDR = sqlCom.ExecuteReader();

        Dictionary<string, Jerow_class_generator.Database> databases = new Dictionary<string, Jerow_class_generator.Database>();
        string[] systemDatabases = new string[] { "information_schema", "mysql" };

        while (sqlDR.Read())
        {
            string dbName = sqlDR.GetString(0);
            if (!systemDatabases.Contains(dbName))
            {
                databases.Add(sqlDR.GetString(0), new MySQL.Database(dbName, this));
            }
        }

        sqlCom.Dispose();
        sqlDR.Close();

        sqlCon.Close();
        sqlCon.Dispose();
        return databases;
    }
Run Code Online (Sandbox Code Playgroud)

PS'新MySQL.Database(dbName,this));' 是我自己制作的类,只存储数据库结构,可以认为是无关紧要的.

我得到的确切错误是'max_user_connections'.在下一次需要触发查询的connection.open行上.

Dan*_*olo 7

我没有跟踪所有地方的所有Open/ Close/ Dispose调用,而是建议用using语句替换所有这些.这将确保每个对象的预期范围是明确的,并且在退出该范围时将被销毁/处置.