2012-03-29 72 views
1

所以我有以下连接字符串,这是我的问题。我试图编写一个能够作为数据库不可知的应用程序(困难但不是不可能),我已经开始在PostgreSQL上测试它,但是我似乎无法获得OLE连接来使用它。从我所看到的完全有可能。与OLE数据库连接使用Npgsql提供程序

我得到了一切使用PostgreSQL的特定类工作,但这使用Npgsql类型而不是通用OLE类型。

E.g. private NpgsqlCommand m_postgreSQLDatabaseCommand;

而不是 私人OleDbCommand m_oleDatabaseCommand;

这在我的情况下是不能接受的。

我试着简单地改变连接字符串来使用Npgsql提供程序,但我不确定是否正确使用它。我得到的错误如下:

连接字符串:

<add name="ApplicationPostgresDefault" 
    connectionString="Server=127.0.0.1;Port=5432; 
    Database=myDatabase; 
    User Id=myUser; 
    Password=myPass; 
    Provider=Npgsql" 
/> 

错误:

The 'Npgsql' provider is not registered on the local machine. 

可以做些什么来解决这个问题?

如果我在那里正确地获取提供程序,我是否能够像使用Npgsql对象一样与PostgreSQL通信?

回答

2

本地机器没有安装提供程序。

我会建议使用本地客户端,而不是OleDb的反正:

http://npgsql.projects.postgresql.org/

http://connectionstrings.com/Providers/npgsql

这是你的选择

+0

那么使用Ole的原因是我不会意识到这个平台,因此不能硬编码任何东西。对通用连接方法的需求是至关重要的。数据库平台的唯一以前的知识将通过web.config或app.config条目。这意味着我无法为每个平台硬编码我的代码的不同版本。我的软件必须不知道数据库平台,并且能够以任何(众所周知的)格式运行。提供者似乎是唯一的选择。谢谢 – CSharpened 2012-03-29 11:12:05

+0

另外你如何安装提供商?我下载的npgsql文件夹中没有exe文件。 – CSharpened 2012-03-29 12:24:46

+0

从这里下载提供者: http://pgfoundry.org/frs/?group_id=1000140 – 2012-03-29 16:05:47

0

Npgsql后面缺少;吗?

+0

试戴加入它,因为我怀疑这是不是问题。它可能早在字符串中出现过。 – CSharpened 2012-03-29 14:03:17

+0

我想这不是重要的连接字符串中的最后一个。我认为Maziar可以提供帮助。 – radbyx 2012-03-29 14:25:17

相关问题