【c#】PostgreSQLに接続してデータを取得する方法

C#

以前にPythonからPostgreSQLに接続してデータを取得する方法を紹介しました。今回はc#からPostgreSQLに接続してデータを取得するところまでを紹介していこうと思います。

文法的な違いだけで、大きな部分はPythonと大きく変わりません。

環境

以下、今回の動作環境です。

  • .NetCore 6.0.3
  • Windows11
  • VS Code

Npgsqlの導入

今回PostgreSQLへの接続にはNpgsqlというライブラリを用います。Nugetで取得します。

[F1]を押してNuget Package Manager: Add Packageを選択します。

Nuget Package Manager: Add Package

その後Npgsqlと入力し、先頭にあるNpgsqlを選択するとインストールが始まります。

Npgsqlを選択

プログラム

ここからは実際にプログラムを書いていきます。

接続文字列の作成

最初に接続文字列を作成します。以下の情報が接続に必要となります。

  • ホスト
  • ポート
  • ユーザ名
  • パスワード
  • DB名

これらの情報を、以下のような形の文字列とする必要があります。この後紹介するコードでは、connectionTextが文字列情報を保持します。

“Server=localhost;Port=5432;Username=postgres;Password=postgresql;Database=dvdrental”

using Npgsql;

namespace ConnectPostgres
{
    class Program{

        static void Main(string[] args){

            string server = "localhost";
            string port = "5432";
            string username = "postgres";
            string password = "postgresql";
            string database = "dvdrental";

            //接続文字列の作成
            string connectionText = $"Server={server};Port={port};Username={username};Password={password};Database={database}";
     }
    }
}

接続してSQL実行

以降はPostgreSQLに接続した後、SQLを実行してデータを取得します。PostgreSQLに接続するオブジェクトNpgsqlConnection()を作成します。引数には接続文字列を渡します。

続いて、NpgsqlCommand()の中でSQLを実行します。command.ExecuteReader()の中に実行結果を保持しており、1行ずつ出力しています。

//接続オブジェクト
var connection = new NpgsqlConnection(connectionText);

string sql = "SELECT * FROM city";

using (var command = new NpgsqlCommand(sql, connection))
{
    // 接続開始
    connection.Open();

    // sql実行
    using (var reader = command.ExecuteReader())
    {
        // 1行ずつ読み取ってコンソールに表示
        while (reader.Read())
        {
            Console.WriteLine($"city_id:{reader["city_id"]} 名前:{reader["city"]} country_id:{reader["country_id"]}");
        }
    }
}


>> city_id:1 名前:A Corua (La Corua) country_id:87
   ...

コード全体

最後の今回のコード全体を紹介します。

using Npgsql;

namespace ConnectPostgres
{
    class Program{

        static void Main(string[] args){

            string server = "localhost";
            string port = "5432";
            string username = "postgres";
            string password = "postgresql";
            string database = "dvdrental";

            //接続文字列の作成
            string connectionText = $"Server={server};Port={port};Username={username};Password={password};Database={database}";

            var connection = new NpgsqlConnection(connectionText);

            string sql = "SELECT * FROM city";

            using (var command = new NpgsqlCommand(sql, connection))
            {
                // 接続開始
                connection.Open();

                // sql実行
                using (var reader = command.ExecuteReader())
                {
                    // 1行ずつ読み取ってコンソールに表示
                    while (reader.Read())
                    {
                        Console.WriteLine($"city_id:{reader["city_id"]} 名前:{reader["city"]} country_id:{reader["country_id"]}");
                    }
                }
            }
        }
    }
}

まとめ

c#からPostgreSQLに接続してデータを取得する方法を紹介しました。接続自体はシンプルに実装できます。ここからDBに対するあらゆる操作をしていくことになり、今回はそのスタートという位置づけです。

参考になれば幸いです^^

ではでは👋