ado.net – ASP.NET:如何从web.config ConnectionString创建一
发布时间:2020-12-15 19:03:43 所属栏目:asp.Net 来源:网络整理
导读:如何根据提供者名称构建DbConnection? 示例提供商名称 System.Data.SqlClient System.Data.OleDb System.Data.Odbc FirebirdSql.Data.FirebirdClient 我有连接字符串存储在我的IIS服务器的web.config文件中: connectionStrings add name="development" con
如何根据提供者名称构建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-mvc-4 – 将nopcommerce 2.8升级到3.10
- asp.net-mvc-4 – ASP.NET Active Directory搜索
- asp.net-membership – 使用SQL提供程序获取ASP.NET成员资格
- ASP.NET Core Web Api自动帮助页面
- asp.net-mvc – 如何在Asp.Net MVC中做部分帖子?
- Asp.net:替换GenericPrincipal
- asp.net-core – 通过JWT Token授权
- asp.net – 当用户有多个角色时,位置授权如何工作?
- 我需要为ASP.NET 4网站提供额外的XSS安全性吗?
- asp.net – 如何在codebehind中调用Eval?
推荐文章
站长推荐
- 在ASP.NET MVC中如何应用多个相同类型的Validati
- asp.net-mvc – 用于表单提交和即时结果显示的良
- asp.net-core – ASP.NET MVC6脚手架在BETA 8中不
- asp.net-mvc – 可靠地处理ASP.NET MVC模型绑定错
- asp.net-mvc-2 – 后退按钮不请求asp.net mvc ge
- asp.net – C#:GDI:使用位图的保存方法过度写入
- asp.net-web-api2 – Web Api 2 Post – UrlHelp
- 具有EntityDataSource的一个ASP.NET GridView中的
- asp.net-mvc – RouteCollection.Ignore和RouteC
- asp.net下Cache 缓存操作类代码
热点阅读