gpt4 book ai didi

C# MySqlConnection 不会关闭

转载 作者:行者123 更新时间:2023-11-29 01:10:37 31 4
gpt4 key购买 nike

我有一个应用程序可以触发 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;
}

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

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

最佳答案

与其跟踪所有的 Open/Close/Dispose 调用,我建议只替换所有的那些 using statements .这将确保每个对象的预期范围是明确的,并且在退出该范围时将被销毁/处置。

关于C# MySqlConnection 不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589340/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com