假设我有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);
}
我将对这些连接做的是,因为我的应用程序是多线程的,并且所有线程都需要同时访问单个数据库,所以我认为为每个线程提供不同的连接,但由于它们都访问同一个数据库,甚至是同一个表,所以我认为给每个连接相同的连接字符串。
此外,每个线程将同时在单个表上的相同列上使用SELECT
命令执行MySqlReader
(通过任务并行库),但每个线程将读取不同的行
问题是,我试图使我的代码尽可能简单易行,但这是一种安全、良好和正确的做法吗? 如果没有,是否有任何简单而安全的方法来做我要做的事情?
如果连接字符串相同,则连接将使用相同的连接池。
最佳做法是每个线程创建、打开和关闭自己的连接,框架将在可能的情况下负责共享资源。
我建议你在这里看一看:https://msdn.microsoft.com/en-us/library/vstudio/8xx3tyca%28v=vs.100%29.aspx
每当用户在连接上调用 Open 时,池程序都会在池中查找可用连接。如果池连接可用,则会将其返回给调用方,而不是打开新连接。当应用程序在连接上调用 Close 时,池程序会将其返回到活动连接的池化集,而不是关闭它。将连接返回到池后,即可在下一次 Open 调用中重复使用。