我正在构建一个需要与多台服务器上的数据库通信的Web应用程序。我提出了在Web.config中保存所有连接字符串并在我的DBUtility类中创建字典以保存连接的想法,其中Key作为DB名称,Value作为连接对象。
<connectionStrings>
<add name="+++++++++" providerName="System.Data.Odbc" connectionString="+++++++++"/>
<add name="---------" providerName="System.Data.Odbc" connectionString="---------"/>
<add name="|||||||||" providerName="System.Data.Odbc" connectionString="|||||||||"/>
<add name="*********" providerName="System.Data.Odbc" connectionString="*********"/>
<add name="~~~~~~~~~" providerName="System.Data.Odbc" connectionString="~~~~~~~~~"/>
</connectionStrings>
每个连接字符串都是唯一的(连接到同一服务器上的不同数据库或连接到另一个服务器中的数据库)。我能够成功连接到这些数据库,虽然我不确定我在代码中做了几件事。
public class DBUtil{
private static Dictionary<string, OdbcConnection> connections = new Dictionary<string, OdbcConnection>();
// open connection
private bool OpenConnection(string name)
{
OdbcConnection connection;
try
{
if (!connections.ContainsKey(name))
{
connection = new OdbcConnection(ConfigurationManager.ConnectionStrings[name].ConnectionString);
connections.Add(name, connection);
}
else
{
connection = connections[name];
}
connection.Open();
}
catch
{
//connections[name] = null;
throw;
}
return true;
}
}
我是否正确地将这些连接保存在字典中并像我一样使用它们?是否有更好/更有效的方法来实现这一目标?我还了解了连接池here和here。根据我的理解,为每个唯一的连接字符串创建一个新的连接池,我对字典的使用不应该干扰连接池。我的理解是否正确?