【发布时间】:2010-11-05 23:20:22
【问题描述】:
如何根据提供者名称构建 DbConnection?
示例提供者名称s
- System.Data.SqlClient
- System.Data.OleDb
- System.Data.Odbc
- FirebirdSql.Data.FirebirdClient
我的 IIS 服务器的 web.config 文件中存储了连接字符串:
<connectionStrings>
<add name="development"
connectionString="Provider = IBMDA400; Data Source = MY_SYSTEM_NAME; User Id = myUsername; Password = myPassword;"
providerName="System.Data.OleDb" />
<add name="live"
connectionString="usd=sa;pwd=password;server=deathstar;"
providerName="System.Data.Odbc" />
<add name="testing"
connectionString="usd=sa;pwd=password;server=deathstar;"
providerName="System.Data.SqlClient" />
<add name="offline"
connectionString="Server=localhost;User=SYSDBA;Password=masterkey;Charser=NONE;Database=c:\data\mydb.fdb"
providerName="FirebirdSql.Data.FirebirdClient"/>
您可以看到他们都使用不同的提供程序。当我需要创建连接时,我必须知道要创建什么样的 DbConnection,例如:
- SqlConnection
- OleDbConnection
- OdbcConnection
- Facebook 连接
connectionStrings 条目包含一个 providerName,但这些不是 DbConnection 后代类的名称,而是一个 命名空间
如何根据字符串 providerName 构建 DbConnection?
public DbConnection GetConnection(String connectionName)
{
//Get the connectionString infomation
ConnectionStringSettings cs =
ConfigurationManager.ConnectionStrings[connectionName];
if (cs == null)
throw new ConfigurationException("Invalid connection name \""+connectionName+"\");
//Create a connection based on the provider
DbConnection conn = new DbConnection();
}
【问题讨论】:
标签: ado.net web-config provider connection-string dbconnection