Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#NET+;PostgreSQL_C#_.net_Postgresql - Fatal编程技术网

C#NET+;PostgreSQL

C#NET+;PostgreSQL,c#,.net,postgresql,C#,.net,Postgresql,我正在研究一个项目,该项目使用C#.NET(位于windows框中)作为主要语言,PostgreSQL作为后端数据库(后端位于linux框中)。我听说ODBC.NET允许轻松集成这两个组件 有没有人有过将C#和PostgreSQL结合起来工作的实际经验?如果是这样的话,您对如何进行、发现的问题等有什么建议吗?我正在使用Npgsql2组件与C#和Postgres合作,他们工作速度很快,我向您推荐 你可以从 注意:如果您想要一个与任何数据库一起工作的应用程序,您可以使用DbProviderFacto

我正在研究一个项目,该项目使用C#.NET(位于windows框中)作为主要语言,PostgreSQL作为后端数据库(后端位于linux框中)。我听说ODBC.NET允许轻松集成这两个组件

有没有人有过将C#和PostgreSQL结合起来工作的实际经验?如果是这样的话,您对如何进行、发现的问题等有什么建议吗?

我正在使用Npgsql2组件与C#和Postgres合作,他们工作速度很快,我向您推荐

你可以从


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

如今,大多数语言/平台(Java、.NET、PHP、Perl等)都可以与几乎任何DBMS一起工作(SQL Server、Firebird、MySQL、Oracle、PostgresSQL等)所以我一秒钟都不会担心。当然可能会有小故障和小问题,但不会有任何阻碍


正如jalcom建议的那样,您应该针对一组接口或至少一组基类(DbConnection、DbCommand等)进行编程拥有一个易于适应的应用程序。

您不应该有太多问题。正如其他人所提到的,有许多.Net PostgreSQL数据提供程序可用。您可能需要注意的一点是,像Linq这样的功能可能无法使用。

有一个用于PostgreSQL at的Linq提供程序。

我们已经开发了使用visual studio 2005和用于PostgreSql()的devart ado.net数据提供程序的所有应用程序


此提供程序的优点之一是它提供了完整的Visual Studio支持。最新版本包括所有新的框架功能,如linq。

Npgsql-.Net提供程序for PostGreSQL-是一个优秀的驱动程序。如果您使用了更传统的ADO.Net框架,您在这里真的很幸运。我有一个t连接到Oracle,看起来与PostGreSQL连接几乎相同。更容易从Oracle转换并重用脑细胞

它支持调用SQL所需的所有标准操作,但也支持调用函数(存储过程)。这包括返回引用游标。。文档编写得很好,提供了有用的示例,没有哲学或神秘的东西。从文档中直接窃取代码,它将立即生效

小弗朗西斯科·菲格雷多和他的团队在这方面做得很好。
现在可在Github上找到它

更好的信息网站是:

阅读文档!

不要让缺少Linq支持阻止你。我使用的一种模式是总是将数据返回到列表中,然后将Linq删除。当我发现同样的情况时,我开始虔诚地这样做(无可否认是晦涩难懂的)MySQL中的Linq表达式没有返回与Sql Server中相同的数据。

只需转到工具-->NuGet Package Manager-->Manager NuGet Package Manager即可

搜索NpgSql,然后选择您的项目并单击安装

示例代码

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中使用大写,因为它区分大小写。

Npgsql是一个很好的驱动程序,但到目前为止我发现的唯一问题是数字值不适合系统。十进制,所以唯一的选项是正确的每个查询或DB模式


我还使用了用于PostgreSql的devart ado.net数据提供程序。这是一个很好的产品,尽管您无法使用VS 2010中内置的实体框架工具来处理您的实体数据模型。不过没什么大不了的。未找到下载链接:未找到请求的页面(错误404)仅供参考:官方不鼓励使用接口,相反,Microsoft希望您在
System.Data.Common
中使用抽象基类。虽然没有任何文档记录,但在.NET2.0版本中,MS内部似乎不赞成使用接口,而赞成使用基类,而没有通过
进行通信bsolete
属性。是API兼容性中一个有趣的读物:-),而不是:connection=d_connection;//您的连接字符串应为:connection.ConnectionString=d_connection;//你和这个项目的联系现在似乎已经死了。答案中的链接无法解析。dblinq.codeplex.com指向github.com/dblinq/dblinq2007,上面说它现在已存档且未维护。已更新为维护的项目。不过我还没试过。不知怎么的,它已经解决了?或者我必须使用double或float?我不认为它已经解决了。我找到的唯一方法是在SQLsthank中舍入数字谢谢你的回复@Maciej