C#.NET + PostgreSQL

我正在研究一个使用C#.NET(坐在一个窗口框)作为主要语言,PostgreSQL作为后端数据库(后端坐在一个Linux框)上的项目。 我听说ODBC.NET允许这两个组件的轻松集成。

有没有人有经验,实际上设置C#和PostgreSQL一起工作? 如果是这样,你有什么build议如何去做,你发现的问题等?

我正在用C#和Postgres使用Npgsql2组件,他们工作得很快,我推荐你。

你可以从https://github.com/npgsql/Npgsql/releases下载;

注意:如果您想要一个可以与任何数据库一起工作的应用程序,那么您可以使用DbProviderFactory类,并使用IDbConnectionIDbCommandIDataReader和/或IDbTransaction接口进行查询。

Npgsql – .Net Provider for PostGreSQL – 是一个很好的驱动程序。 如果您使用了更传统的ADO.NET框架,那么您真的很幸运。 我有连接到Oracle的代码,看起来几乎相同的PostGreSQL连接。 更容易从Oracle过渡到重用脑细胞。

它支持所有你想用SQL调用的标准东西,但是它也支持调用函数 (存储过程)。 这包括参考游标的返回。 这个文档写得很好,并提供了有用的例子,而没有哲学或神秘。 直接从文档中窃取代码,它将立即运行。

Francisco Figueiredo,Jr和他的团队在这方面做得很好。
它现在在Github上可用。
https://github.com/franciscojunior/Npgsql2

信息更好的网站是: http : //npgsql.projects.postgresql.org/

阅读文档! http://npgsql.projects.postgresql.org/docs/manual/UserManual.html

我们已经开发了几个应用程序,使用Visual Studio 2005和PostgreSQL的devart ado.net数据提供程序( http://www.devart.com/pgsqlnet/ )。

这个提供者的优点之一是它提供了完整的Visual Studio支持。 最新版本包括所有新的框架function,如linq。

今天,大多数语言/平台(Java,.NET,PHP,Perl等)几乎可以与任何DBMS(SQL Server,Firebird,MySQL,Oracle,PostgresSQL等)协同工作,所以我不用担心一秒钟。 当然可能会有小故障,但是没有止步不前。

正如jalcombuild议您应该对一组接口或至less一组基类(DbConnection,DbCommand等)进行编程,以使其具有易于适应的应用程序。

你不应该有太多的问题。 正如其他人所说,有许多.Net PostgreSQL数据提供者可用。 有一件事你可能要留意的是,像Linq这样的function可能无法使用。

不要让Linq支持的缺乏阻止你。 我使用的模式是总是将我的数据返回到列表中,然后linq。 当我发现MySQL中的相同(不可否认的)Linqexpression式没有像在Sql Server中那样带回相同的数据时,我开始虔诚地做这件事。

只需转到工具 – > NuGet包pipe理器 – >pipe理器Nuget包pipe理器

searchNpgSql ,然后select您的项目,然后单击安装

示例代码

 public void Demo() { NpgsqlConnection connection = new NpgsqlConnection(); connection = d_connection; // your connection string connection.Open(); NpgsqlCommand cmd = new NpgsqlCommand(); try { cmd.Connection = connection; cmd.CommandText = "select * from your table name"; cmd.CommandType = System.Data.CommandType.Text; using (var dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { string answer= dataReader.IsDBNull(0) ? "" : dataReader.GetString(0); } dataReader.Dispose(); } } catch (Exception e) { } finally { cmd.Dispose(); connection.Dispose(); } } 

不要在postgreSql中使用大写,因为它区分大小写。