C#の勉強環境の準備（デスクトップ開発）

**開発環境を整える**
Windows10のパソコンに、Visual Studio で、C#を開発する環境を準備します。
データベースには、Postgresを利用します。
　　・Visual Studio 2022
　　・Postgres 17.5


**Visual Studio**
こちらのサイトから、Installerがダウンロードできるようです。
https://visualstudio.microsoft.com/ja/downloads/
パソコンに、Windowsを利用されるなら、Microsoft Storeで取得するのもありですね。
昔は有料で高額で御高い感じでしたが、現在は学生さんや勉強に利用する分には無料で済むようです。
Installerを実行すると、以下のような画面が表示されるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/8ac06c41-542b-489b-8501-4aaf0a9e0545.png)


とりあえず、以下の３点セットでINSTALLしてみます。
　　１）ASP.NETとWeb開発　…　この勉強がしたいのです。
　　２）Azureの開発　…　クラウドも最近多いので試してみたいです。
　　３）.NETデスクトップ開発　…　基礎勉強の為、アプリ開発も準備します。
（3.4GBのダウンロードと、HDの空きが12GBぐらい必要のようでした）


**Hello World してみる**
Visual Studio を起動して、プロジェクトを作成してみましょう。
「新しいプロジェクトの作成」で進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/1c917b1f-7457-44d7-b1d8-f989fbc7ccf1.png)







コンソールアプリで進めてみたいと思います。「コンソール」と言えばDos窓ですね。
そのコンソール画面に、「Hello, World」を表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/14953080-81f9-4cee-9671-75b732fe6629.png)





Visual Studio のプログラム編集画面を起動すると、こんな感じになります。
既に、「Hello, World」が準備された状態でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/e5f9cf97-bbac-41c5-989a-ea9fabd1a285.png)





実行すると、コンソール画面が起動され、「Hello, World!」が表示されます。
これで、Visual Studio の開発準備はOKですね。


**Postgres**
以前、セットアップした事があります。
https://qiita.com/MasahiroShouya/items/aaf5d51b05846f196a0f
ほぼデフォルトでInstallは終了です。
以下で、勉強に利用するDBとTableを作成し、データを挿入しましょう。
```diff_sql:データベース作成
CREATE DATABASE db_test;
```
```diff_sql:テーブル作成
CREATE TABLE t_test (
    code    char(5),
    name    varchar(40),
    age     integer,
    birthdate date,
    CONSTRAINT code_title PRIMARY KEY(code)
);
```
```diff_sql:データ挿入
insert into t_test values ('A001', '名前1', 20, '2020/1/1');
insert into t_test values ('A002', '名前2', 21, '2020/2/1');
insert into t_test values ('A003', '名前3', 22, '2020/3/1');
```
データベースの準備が終わったら、プログラムや実行環境を整えましょう。
Visual Studio のプログラムを書き換えます。
```diff_c_sharp:Program.cs
using Npgsql;
// 接続文字列
var connectionString = "Server=localhost;Port=5432;Username=postgres;Password=masahiro;Database=db_test";
// DB操作に必要なインスタンスを生成
using (var connection = new NpgsqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
    // 接続の確立
    connection.Open();
    // SELECT文の実行
    command.CommandText = "SELECT * FROM t_test;";
    using var reader = command.ExecuteReader();
    // 1行ずつデータを取得
    while (reader.Read())
    {
        var birthdate = reader["birthdate"] as DateTime?;
        string formattedBirthdate = birthdate.HasValue ? birthdate.Value.ToString("yyyy/MM/dd") : "";
        Console.WriteLine($"ID:{reader["code"]}  名前:{reader["name"]}  年齢:{reader["age"]}   誕生日:{formattedBirthdate}");
    }
}
```
すると、エラーが…。「パッケージ Npgsql がありません」　当然かな、という内容でした。
C#でPostgresを操作する時に必要なパッケージ「Npgsql」ですが、まだ準備してません。
という事で、Visual Studio 画面右側のソリューションエクスプローラーより、プロジェクトを選択した状態で右クリック。
メニューの「NuGetパッケージの管理」を選択し、「Npgsql」を検索します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/c9d44408-2c2d-45ab-b25b-70060a834ad5.png)
パッケージを選択して、インストールしましょう。
これで準備は完了です。実行すると、準備していたデータがコンソールに表示されるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878922/b3b1776f-8837-4be0-8ae7-e9d9c6d226bd.png)
色々と勉強する準備ができたと思います。
以上、御疲れさまでした～。