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



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

应用程序内配置:

<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

我是不是做错了什么?

我刚刚尝试了以下代码:

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

该工厂的回复为非空。由于这段代码应该可以正常工作,所以还有其他事情要做。

我不知道这是否有帮助,但我一直面临着同样的问题。我试图使用OleDbConnection来获得工厂,但没有成功。我使用了相同的数据库,但通过SqlConnection,它运行得很好。也许这与连接的类型有关,但文档中并没有对此进行深入了解。如果DbProviderFactories.GetFactory不能与某些类型的DbConnection一起工作,那么它至少应该抛出一个异常。请尝试更改为其他连接类型。问候和好运。

相关内容

  • 没有找到相关文章

最新更新