C#MySql MySqlConnection使整个程序保持打开状态
本文关键字:状态 程序 MySqlConnection C#MySql | 更新日期: 2023-09-27 17:59:27
所以我想做的是打开一个MysqlConnection,然后永远不要为整个应用程序关闭它(直到最后)。
我有这个:
static void Main(string[] args)
{
OpenCon();
}
public static MySqlConnection OpenCon()
{
MySqlConnection masterOpenCON = new MySqlConnection(SQLStringClass.masterConString);
masterOpenCON.Open();
return masterOpenCON;
}
然而,我相信这将持续打开连接,我如何打开一次连接并在整个应用程序中引用连接。这就是我现在的称呼。
try
{
MySqlCommand mysqlprocessCmdInsertItem = new MySqlCommand(SQLStringClass.mySQLCOMMAND, OpenCon());
mysqlprocessCmdInsertItem.ExecuteNonQuery();
}
不要为此烦恼。MySQL ADO.NET连接器使用一个连接池,这意味着当您在连接上调用.Open
时,您实际上并没有打开它,而是从现有的连接池中提取它;当您调用.Close
时,您并没有关闭它,而是将它返回到连接池,以便可以重用。
IIRC连接池在默认情况下是启用的,但您可以使用连接字符串上的以下参数来控制它:
- 池=真
- 最大池大小=100
- 最小池大小=0
因此,当您想要发送SQL查询时,您只需要执行以下操作,并让ADO.NET框架担心连接:
using (var conn = new MySqlConnection(SQLStringClass.masterConString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT Foo FROM Bar";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
...
}
}
}
我建议您避免任何静态成员和手动连接处理。
您需要将连接存储在static
字段或属性中。
例如:
public static MySqlConnection Connection { get; private set; }
Connection = OpenCon();
您还需要将连接对象指定为静态。
private static MySqlConnection masterOpenCON;
static void Main(string[] args)
{
OpenCon();
}
public static MySqlConnection OpenCon()
{
masterOpenCON = new MySqlConnection(SQLStringClass.masterConString);
masterOpenCON.Open();
return masterOpenCON;
}