首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不明白为什么DbProviderFactories.GetFactory返回NULL

不明白为什么DbProviderFactories.GetFactory返回NULL
EN

Stack Overflow用户
提问于 2015-06-25 17:40:02
回答 2查看 3.1K关注 0票数 2

在我的C#应用程序中,我大致有以下代码:

In App.Config:

代码语言:javascript
复制
<connectionStrings>
  <add name="Con1" connectionString="..." providerName="System.Data.Odbc"/>
</connectionStrings>

代码中的

代码语言:javascript
复制
static DbConnection createConnection(ConnectionStringSettings conn_str)
{
    DbProviderFactory factory = DbProviderFactories.GetFactory(conn_str.ProviderName);
    var retval = factory.CreateConnection();
    retval.ConnectionString = conn_str.ConnectionString;
    return retval;
}

这为我创建了一个连接变量,conn,并且工作得很好(我可以打开连接,查询它,等等),所以我知道我引用的是正确的库。

但是,稍后,我需要再次获得工厂,并使用:

代码语言:javascript
复制
DbProviderFactory factory = DbProviderFactories.GetFactory(conn);

但是,不管是什么原因,我都会得到那个factory = null

我做错什么了吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-25 17:54:02

我刚刚尝试了以下代码:

代码语言:javascript
复制
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
var retval = factory.CreateConnection();

工厂以非零的身份回来了。还有其他原因,因为这段代码应该可以正常工作。

票数 0
EN

Stack Overflow用户

发布于 2017-10-27 17:18:46

我不知道这是否有帮助,但我一直面临着同样的问题。我试着用OleDbConnection来得到没有运气的工厂。我使用相同的数据库,但通过一个SqlConnection,它工作得很好。也许这与连接的类型有关,但是文档并没有给出这方面的洞察力。如果DbProviderFactories.GetFactory不能处理某些类型的DbConnection,它至少应该抛出一个异常。尝试更改为另一种连接类型。问候并祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31057124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档