dbconnection连接oracle数据库,.net – C#通过连接字符串检索正确的DbConnection对象

我有一个连接字符串传递给一个函数,我需要基于这个字符串创建一个基于DbConnection的对象(即SQLConnection,OracleConnection,OLEDbConnection等)。

是否有任何内置的功能,或任何第三方图书馆协助。我们不一定构建这个连接字符串,所以我们不能依赖字符串写入的格式来确定它的类型,我宁可不必对可能的连接字符串的所有组合和排列进行编码

DbConnection GetConnection(string connStr)

{ string providerName = null;

var csb = new DbConnectionStringBuilder{ConnectionString=connStr};

if (csb.ContainsKey("provider"))

{ providerName = csb["provider"].ToString();

}

else

{ var css = ConfigurationManager

.ConnectionStrings

.Cast()

.FirstOrDefault(x=>x.ConnectionString==connStr);

if (css != null) providerName = css.ProviderName;

}

if (providerName != null)

{ var providerExists = DbProviderFactories

.GetFactoryClasses()

.Rows.Cast()

.Any(r=>r[2].Equals(providerName));

if (providerExists)

{ var factory = DbProviderFactories.GetFactory(providerName);

var dbConnection = factory.CreateConnection();

dbConnection.ConnectionString = connStr;

return dbConnection;

}

}

return null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值