gpt4 book ai didi

c# - 具有相同连接字符串的某些连接会发生什么?

转载 作者:行者123 更新时间:2023-11-29 22:30:12 24 4
gpt4 key购买 nike

假设我有 4 个 MySQL 连接和一个 connectString(我启用连接池,我使用 MySQL 本身的 MySQL .NET Connector)

protected internal MySqlConnection connection;
protected internal MySqlConnection cnnct1,cnnct2,cnnct3;
protected internal string connectString = "SERVER=" + addressBox.Text + ";DATABASE=" + dbNameBox.Text + ";UID=" + UserBox.Text + ";PASSWORD=" + PassBox.Text + ";";

然后我分配连接

protected internal void connectionMaker()
{
connection = new MySqlConnection(connectString);
cnnct1 = new MySqlConnection(connectString);
cnnct2 = new MySqlConnection(connectString);
cnnct3 = new MySqlConnection(connectString);
}

我将如何处理这些连接,因为我的应用程序是多线程的,并且所有线程都需要同时并发访问单个数据库,所以我认为给每个线程提供不同的连接,但因为它们都在访问到同一个数据库,甚至同一个表,所以我认为给每个连接相同的连接字符串。

对于加法,每个线程将执行 MySqlReaderSELECT同时对单个表上的相同列执行命令(通过任务并行库),但每个命令都会读取不同的行

我的问题是,我试图使我的代码尽可能简单和容易,但这是否是一种安全、良好且正确的做法?如果没有,有没有简单而安全的方法来完成我要做的事情?

最佳答案

如果连接字符串相同,连接将使用相同的连接池。

最佳实践是每个线程创建、打开和关闭自己的连接,框架将在可能的情况下负责共享资源。

我建议你看一下这里:https://msdn.microsoft.com/en-us/library/vstudio/8xx3tyca%28v=vs.100%29.aspx

每当用户在连接上调用 Open 时,池程序就会在池中查找可用的连接。如果池连接可用,则会将其返回给调用者,而不是打开新连接。当应用程序对连接调用 Close 时,池管理器会将其返回到池化的事件连接集中,而不是关闭它。一旦连接返回到池中,就可以在下一次 Open 调用中重用。

关于c# - 具有相同连接字符串的某些连接会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874029/

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