記事内に広告が含まれています

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

C#

C#でPostgreSQLに接続して、データを取得する方法について解説します。

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

環境

  • Visual Studio 2022
  • .NET 8
  • PostgreSQL 16.1

事前準備(データベースの作成)

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

psqlやpgAdminなどで、適当にtestという名前のデータベースを作成します。

create database test;
\l

データベースが作成されたことを確認します。

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

Visual Studioで新しいプロジェクト(コンソールアプリ)を立ち上げましょう。

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

ソリューションエクスプローラーからプロジェクト名を右クリックし、「NuGetパッケージの管理」をクリックします。

「参照」で「npgsql」と検索し、一番上に表示される「Npgsql」をインストールしてください。

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

それではC#からPostgreSQLに接続して、SELECT文を実行してみましょう。
Program.cs(最上位レベルのステートメントを使用)に以下のコードを書いて実行すると、作成したテーブルのデータを全て取得できます。

using Npgsql;

// 接続文字列
var connectionString = "Server=localhost;Port=5432;Username=postgres;Password=<設定したパスワード>;Database=test";

// DB操作に必要なインスタンスを生成
using (var connection = new NpgsqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
    // 接続の確立
    connection.Open();

    // usersテーブルが存在する場合は削除する
    command.CommandText = "DROP TABLE IF EXISTS users;";
    command.ExecuteNonQuery();

    // usersテーブルの作成
    command.CommandText = "CREATE TABLE users (id INTEGER, name VARCHAR(10), age INTEGER);";
    command.ExecuteNonQuery();

    // サンプルデータの登録
    command.CommandText = @"
                    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);";
    command.ExecuteNonQuery();

    // SELECT文の実行
    command.CommandText = "SELECT * FROM users;";
    using var reader = command.ExecuteReader();

    // 1行ずつデータを取得
    while (reader.Read())
    {
        Console.WriteLine($"ID:{reader["id"]}  名前:{reader["name"]}  年齢:{reader["age"]}");
    }
}

コードの内容はコメントに書かれている通りで、接続文字列をもとにPostgreSQLに接続→usersテーブルの削除→usersテーブルの作成→サンプルデータのINSERT→usersテーブルの全件取得の順で処理を行っています。

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

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

実行結果

コンソール上にテーブル内容が表示されます。

※もしデバッグコンソールが実行後にすぐに消えてしまう場合は、以下の設定を変更してください。
メニューバーの ツール > オプション > デバッグ > 全般 > デバッグの停止時に自動的にコンソールを閉じる のチェックを OFF

参考

UPDATE・DELETEの実行方法については、下記のSQL Server向け記事を参考にしてください。(NpgsqlがSqlClientに変わるだけで基本的な使い方は同じです。)

おすすめ書籍】

著:金城俊哉
¥2,851 (2024/04/25 13:29時点 | Amazon調べ)
C#
hiranote

コメント

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