c# - .NET 与 MySqlConnection 和连接池

标签 c# mysql

我是 .NET 和 Mysql Connection 的初学者。

为了避免对 .NET 的 Connection pool 产生误解,我想问一些我的问题。

我的代码很简单

class Program
{
    static void Main(string[] args)
    {
        string connectionSetting = "Data Source=127.0.0.1;Database=my_table; User Id=root;Password=root" + ";charset=euckr";

        MySqlConnection con = new MySqlConnection(connectionSetting);

        con.Open();

        MySqlCommand command = new MySqlCommand("insert into log(strLog) values('log1')", con);

        command.ExecuteNonQuery();

        con.Close();
    }
}

我一直在尝试如何为 mysql-server 创建连接实例,答案是单例,但我在 StackOverflow 中发现了很多帖子,有些答案说不要共享 MySql Connection 实例和这就是我要做的。

我的问题是“谁在控制连接池?”

在上面的代码中,没有涉及控制连接池的代码,如GetPool、PutPool等调用。所以我认为数据库连接池是在 mysql-server 端控制的,.NET 端没有任何其他作业。我的理解正确吗?

如果我的想法是对的,我会使用下面的代码。

class dbcp
{
    public const string m_ConnectionString = "Data Source=127.0.0.1;Database=my_table; User Id=root;Password=root" + ";charset=euckr";

    public MySqlConnection connection;

    public dbcp() { }

    public void QueryLog(string log)
    {
        connection = new MySqlConnection(m_ConnectionString);
        connection.Open();

        string strSQL = "insert into log(strLog) values('log1')";
        MySqlCommand cmd = new MySqlCommand(strSQL, connection);
        cmd.ExecuteNonQuery();

        connection.Close();
    }
}

class SomeClassA
{
    public dbcp dbHandler;
}

class SomeClassB
{
    public dbcp dbHandler;
}

class Program
{
    static void Main(string[] args)
    {
        string connectionSetting = "Data Source=127.0.0.1;Database=gw_ocpp_server; User Id=root;Password=root" + ";charset=euckr";

        MySqlConnection con = new MySqlConnection(connectionSetting);

        con.Open();

        MySqlCommand command = new MySqlCommand("insert into log(strLog) values('log1')", con);

        command.ExecuteNonQuery();

        con.Close();
    }
}

最佳答案

连接池是一种创建和管理连接池的技术:

这是关于 connection pooling 的附加信息

关于c# - .NET 与 MySqlConnection 和连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990306/

相关文章:

mysql - 从服务器成功接收到的最后一个数据包是在 43417 秒前

c# - 如何检查当前时区是否为 (UTC+9 :00) Osaka, Sapporo, Tokyo on other languages?

c# - 在 Windows 应用程序中,如何使用 C#.Net 2.0 在图片框中保存来自网络摄像头的实时图像

c# - 如何阻止我的 <httpErrors> 404 "ExecuteURL"映射破坏我的表单?

c# - 将数据库转换/转换为 C# 的数据集

MySQL/NodeJS 选择 where/like 日语字符

c# - 使用 HtmlEntity.DeEntitize() 方法的 KeyNotFoundException

php - MySQL IF in WHERE 条件基于 SELECT 列

mysql - 双引号等字符插入MySQL数据库时什么时候需要转义?

mysql - mysql 的 maxSize 为 25000 的 grails 2.3.1 问题