在我的C#应用程序中,我大致有以下代码:
In 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。
我做错什么了吗?
发布于 2015-06-25 17:54:02
我刚刚尝试了以下代码:
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
var retval = factory.CreateConnection();工厂以非零的身份回来了。还有其他原因,因为这段代码应该可以正常工作。
发布于 2017-10-27 17:18:46
我不知道这是否有帮助,但我一直面临着同样的问题。我试着用OleDbConnection来得到没有运气的工厂。我使用相同的数据库,但通过一个SqlConnection,它工作得很好。也许这与连接的类型有关,但是文档并没有给出这方面的洞察力。如果DbProviderFactories.GetFactory不能处理某些类型的DbConnection,它至少应该抛出一个异常。尝试更改为另一种连接类型。问候并祝你好运。
https://stackoverflow.com/questions/31057124
复制相似问题