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