54

私は、C#.NET(Windowsボックス上にある)を第一言語として使用し、PostgreSQLをバックエンドデータベース(バックエンドはLinuxボックス上にある)として使用するプロジェクトに取り組んでいます。ODBC.NETを使用すると、これら2つのコンポーネントを簡単に統合できると聞きました。

誰かが実際にC#とPostgreSQLを一緒に動作するように設定した経験がありますか?もしそうなら、それをどうやって進めるか、あなたが見つけた問題などについて何か提案はありますか?

4

9 に答える 9

58

私はNpgsql2コンポーネントを使用して C# と Postgres を使用していますが、それらは高速に動作します。お勧めします。

https://github.com/npgsql/Npgsql/releasesからダウンロードできます

注:任意のデータベースで動作するアプリケーションが必要な場合は、DbProviderFactoryクラスを使用し、 IDbConnectionIDbCommandIDataReader、およびIDbTransactionインターフェイスを使用してクエリを作成できます。

于 2008-09-05T23:33:26.020 に答える
13

Npgsql - .Net Provider for PostGreSQL - is an excellent driver. If you have used the more traditional ADO.NET framework you are really in luck here. I have code that connects to Oracle that looks almost identical to the PostGreSQL connections. Easier to transition off of Oracle and reuse brain cells.

It supports all of the standard things you would want to do with calling SQL, but it also supports calling Functions (stored procedures). This includes the returning of reference cursors. The documentation is well written and provides useful examples without getting philosophical or arcane. Steal the code right out of the documentation and it will work instantly.

Francisco Figueiredo, Jr's and team have done a great job with this.
It is now available on Github.
https://github.com/franciscojunior/Npgsql2

The better site for info is: http://npgsql.projects.postgresql.org/

Read the documentation! http://npgsql.projects.postgresql.org/docs/manual/UserManual.html

于 2012-04-02T17:01:39.320 に答える
11

https://www.nuget.org/packages/linq2db.PostgreSQL/に PostgreSQL 用の Linq プロバイダーがあります。

于 2008-09-06T16:06:50.217 に答える
3

Visual Studio 2005 と PostgreSql 用の devart ado.net データ プロバイダー ( http://www.devart.com/pgsqlnet/ ) を使用して、いくつかのアプリケーションを開発しました。

このプロバイダーの利点の 1 つは、Visual Studio を完全にサポートすることです。最新バージョンには、linq などの新しいフレームワーク機能がすべて含まれています。

于 2008-09-09T12:12:05.437 に答える
2

Linq のサポートがないからと言って止めてはいけません。私が使用するパターンは、常にデータをリストに戻してから、linq で削除することです。MySQL の同じ (確かにあいまいな) Linq 式が Sql Server の場合と同じデータを返さないことがわかったとき、私はこれを宗教的にやり始めました。

于 2013-09-26T21:02:01.050 に答える
2

現在、ほとんどの言語/プラットフォーム (Java、.NET、PHP、Perl など) は、ほぼすべての DBMS (SQL Server、Firebird、MySQL、Oracle、PostgresSQL など) と連携できるため、1 秒も心配する必要はありません。確かにグリッチや小さな問題はあるかもしれませんが、ショーストッパーはありません。

jalcom が提案したように、簡単に適応可能なアプリケーションを作成するには、インターフェイスのセットまたは少なくとも基本クラスのセット (DbConnection、DbCommand など) に対してプログラミングする必要があります。

于 2008-09-06T00:04:37.427 に答える
2

あまり問題を抱えてはいけません。他の人が述べたように、多くの .Net PostgreSQL データ プロバイダーが利用可能です。注意すべきことの 1 つは、Linq のような機能がおそらく使用できないことです。

于 2008-09-06T00:07:53.987 に答える
1

ツールに移動するだけです-> NuGetパッケージマネージャー->マネージャーNugetパッケージマネージャー

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 では大文字を使用しないでください。

于 2016-11-30T07:29:13.090 に答える