.NET与MySqlConnection和连接池

时间:2017-03-24 02:20:45

标签: 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中找到了很多帖子,有些答案说Don不共享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();
    }
}

1 个答案:

答案 0 :(得分:0)

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

以下是connection pooling

的其他信息