ado.net – ASP.NET:如何从web.config ConnectionString创建一个连接?
发布时间:2020-05-23 07:58:11 所属栏目:asp.Net 来源:互联网
导读:如何根据提供者名称构建DbConnection? 示例提供商名称 System.Data.SqlClient System.Data.OleDb System.Data.Odbc FirebirdSql.Data.FirebirdClient 我有连接字符串存储在我的IIS服务器的web.config文件中: connectionStrings add name=dev
|
如何根据提供者名称构建DbConnection? 示例提供商名称 > System.Data.SqlClient 我有连接字符串存储在我的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:datamydb.fdb"
providerName="FirebirdSql.Data.FirebirdClient"/>
你可以看到他们都使用不同的提供者.当我来创建一个连接的时候,我必须知道要创建什么样的DbConnection,例如: > SqlConnection 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();
}
解决方法如果你走这条路线,我想你会想要使用DbProviderFactories类获得一个可以用来构建连接的DbProviderFactory.我没有尝试过这个代码,但我认为它会奏效.您可能需要使用DbProviderFactories类上的GetFactoryClasses方法查找提供程序名称,并使用InvariantName.public DbConnection GetConnection(String connectionName)
{
//Get the connection string info from web.config
ConnectionStringSettings cs=
ConfigurationManager.ConnectionStrings[connectionName];
//documented to return null if it couldn't be found
if (cs == null)
throw new ConfigurationErrorsException("Invalid connection name ""+connectionName+""");
//Get the factory for the given provider (e.g. "System.Data.SqlClient")
DbProviderFactory factory =
DbProviderFactories.GetFactory(cs.ProviderName);
//Undefined behaviour if GetFactory couldn't find a provider.
//Defensive test for null factory anyway
if (factory == null)
throw new Exception("Could not obtain factory for provider ""+cs.ProviderName+""");
//Have the factory give us the right connection object
DbConnection conn = factory.CreateConnection();
//Undefined behaviour if CreateConnection failed
//Defensive test for null connection anyway
if (conn == null)
throw new Exception("Could not obtain connection from factory");
//Knowing the connection string,open the connection
conn.ConnectionString = cs.ConnectionString;
conn.Open()
return conn;
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-vnext中的旧程序集引用错误
- asp.net-mvc – 获取ActionName,ControllerName和AreaName,
- asp.net-mvc – 在Owin Identity和Asp.Net MVC中正确使用声
- asp.net-mvc – MVC3 Html.HiddenFor(Model = Model.Id)不传
- asp.net-mvc – 具有持久HTTP连接的IDbConnection生命周期管
- asp.net – 防止百分比字符转换
- asp.net – 对齐和填充为asp:CheckBoxList
- ASP.net MVC验证突出显示和不正确的字段Jquery上的图标
- asp.net-mvc-3 – 我应该尝试使用MVC3和ASP.net的F#吗?
- asp.net-mvc-3 – 是否可以设置TextBoxFor生成的输入类型
推荐文章
站长推荐
- 为什么我的asp.net应用程序抛出ThreadAbortExcep
- 从asp经典转换到asp.net最简单的方法是什么?
- ASP.NET MVC2与实体框架4 – AsEnumerable()或To
- asp.net-mvc – 使用ViewModels,EditModels和Aut
- LoginView中的ASP.NET LoginStatus不会触发Loggi
- asp.net-mvc – 为ASP.NET MVC Action Links添加
- asp.net-mvc – 从WebAPI生成MVC控制器操作的路由
- asp.net – HTTPS停止使用IIS express
- asp.net-mvc-4 – 如何在MVC4中使用SimpleMember
- asp.net – MVC 3部署到IIS6
热点阅读
