【C#】PostgreSQLに接続して直接SELECT文を実行する

C# / .NET

C#でPostgreSQLに接続して、直接SELECT文でデータを取得する方法についてまとめました。

※Entity Framework Coreを使ってPostgreSQLを操作する方法については以下の記事で解説しています。

スポンサーリンク

環境

  • Windows10
  • Visual Studio Community 2019
  • .NET Framework 4.8
  • PostgreSQL 13.2

事前準備(PostgreSQLでテーブルの作成)

事前にPostgreSQLでテーブルを作成しておきます。
※既に作成済みのテーブルに接続する場合は飛ばしてください。
※PostgreSQLのダウンロードはこちらから
 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

まずデータベースを作成します。GUIでもいいですが今回はpsqlを使ってコマンドで操作します。
適当にtestという名前のデータベースを作成します。

create database test;
\c test;

次にusersテーブルを作成します。

create table users (
id integer,
name varchar(10),
age integer
);

適当に3件のデータを追加します。

INSERT INTO users (id, name, age) VALUES (1, 'Mike', 30);
INSERT INTO users (id, name, age) VALUES (2, 'Lisa', 24);
INSERT INTO users (id, name, age) VALUES (3, 'Taro', 35);

全体的な流れと作成したテーブルの中身はこんな感じです。

プロジェクトの作成とパッケージのインストール

Visual Studioで新しいプロジェクトを立ち上げます。今回はコンソールアプリにしてみます。

C#でPostgreSQLを使うためには「Npgsql」というパッケージが必要になります。

プロジェクトが起動したら、ソリューションエクスプローラーで「参照」を右クリックし、「NuGetパッケージの管理」をクリックします。

「参照」で「Npgsql」と検索し、出てきた「Npgsql」をインストールしてください。インストールが完了したら準備完了です。

C#からPostgreSQLに接続してSELECT文を実行

それではC#からPostgreSQLに接続して、SELECT文を実行してみましょう。
以下のプログラムを書いて実行すると、テーブル内容がすべて取得できます。

using Npgsql; // 参照の追加
using System;

namespace PostgreApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 接続文字列
            var connectionString = 
        "Server=localhost;Port=5432;Username=postgres;Password=<設定したパスワード>;Database=test";

            // 実行するSQL
            var sql = "SELECT * FROM users";

            // DB操作に必要なインスタンスを生成
            using (var connection = new NpgsqlConnection(connectionString))
            using (var command = new NpgsqlCommand(sql, connection))
            {
                // 接続開始
                connection.Open();

                // SELECT文の実行
                using (var reader = command.ExecuteReader())
                {
                    // 1行ずつ読み取ってコンソールに表示
                    while (reader.Read())
                    {
                        Console.WriteLine($"ID:{reader["id"]} 名前:{reader["name"]} 年齢:{reader["age"]}");
                    }
                }
            }
        }
    }
}

接続文字列には以下の5つを指定する必要があります。

  • Server:接続先サーバのホスト名。ローカル環境なら「localhost」を指定
  • Port:サーバのポート番号。自分で変更していなければ「5432」
  • Username:接続するユーザー名。今回はデフォルトの「Postgres」を使用
  • Password:設定したパスワード
  • Database:接続するデータベース名。今回は「test」を指定

実行結果

無事コンソール上にテーブル内容が表示されました。

参考書籍】
PostgreSQLの基本操作やSQLについて学びたい場合は、以下の本がおすすめです。

コメント

タイトルとURLをコピーしました