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

时间:2015-06-25 17:40:03

标签: c# odbc dbproviderfactories

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

在App.Config中:

<connectionStrings>
  <add name="Con1" connectionString="..." providerName="System.Data.Odbc"/>
</connectionStrings>

在我的代码中:

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并且工作得很好(我可以打开连接,查询它等),所以我知道我正在引用正确的库。

然而,稍后,我需要再次使用工厂并使用:

DbProviderFactory factory = DbProviderFactories.GetFactory(conn);

但是,无论出于何种原因,我都会回到factory = null

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我刚刚尝试了以下代码:

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
var retval = factory.CreateConnection();

工厂回来时不是空的。还有其他事情发生,因为这段代码应该可以正常工作。

答案 1 :(得分:0)

我不知道它是否有帮助,但我一直面临同样的问题。我试图使用OleDbConnection让工厂没有运气。我使用相同的数据库,但通过SqlConnection,它工作正常。也许它与连接类型有关,但文档没有提供有关它的见解。如果DbProviderFactories.GetFactory不能用于某些类型的DbConnection,它至少应该抛出异常。尝试更改为其他连接类型。问候和祝你好运。