クイックスタート: .NET (C#) を使用して Azure Database for PostgreSQL - フレキシブル サーバーに接続し、データのクエリを実行する
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
このクイックスタートでは、C# アプリケーションを使って Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続する方法を見ていただきます。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事の手順では、C# を使った開発には慣れているものの、Azure Database for PostgreSQL フレキシブル サーバーを使うのは初めてであるユーザーを想定しています。
前提条件
このクイックスタートでは、以下が必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure portal を使って Azure Database for PostgreSQL フレキシブル サーバーのインスタンスを作成する
Azure CLI を使用して、Azure Database for PostgreSQL の単一サーバーを作成します (まだない場合)。 - サーバーにある空の postgres データベースを使用するか、新しいデータベースを作成します。
- 使用しているプラットフォーム (Windows、Ubuntu Linux、または macOS) 用の .NET SDK をインストールします。
- プロジェクトをビルドするには、Visual Studio をインストールします。
- Visual Studio に Npgsql NuGet パッケージをインストールします。
接続情報の取得
Azure Database for PostgreSQL フレキシブル サーバーのインスタンスに接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。
- Azure Portal にログインします。
- Azure Portal の左側のメニューにある [すべてのリソース] をクリックし、作成したサーバー (例: mydemoserver) を検索します。
- サーバー名をクリックします。
- サーバーの [概要] パネルから、 [サーバー名] と [サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。
手順 1: データの接続と挿入
接続し、CREATE TABLE および INSERT INTO SQL ステートメントを使用してデータを読み込むには、次のコードを使用します。 このコードでは、NpgsqlCommand クラスと次のメソッドを使用します。
- Open(): Azure Database for PostgreSQL フレキシブル サーバー データベースへの接続を確立します。
- CreateCommand (): CommandText プロパティを設定します。
- ExecuteNonQuery (): データベース コマンドを実行するメソッドです。
重要
Host、DBName、User、Password の各パラメーターは、サーバーとデータベースの作成時に指定した値に置き換えてください。
using System;
using Npgsql;
namespace Driver
{
public class AzurePostgresCreate
{
// Obtain connection string information from the portal
//
private static string Host = "mydemoserver.postgres.database.azure.com";
private static string User = "mylogin";
private static string DBname = "postgres";
private static string Password = "<server_admin_password>";
private static string Port = "5432";
static void Main(string[] args)
{
// Build connection string using parameters from portal
//
string connString =
String.Format(
"Server={0};Username={1};Database={2};Port={3};Password={4};SSLMode=Prefer",
Host,
User,
DBname,
Port,
Password);
using (var conn = new NpgsqlConnection(connString))
{
Console.Out.WriteLine("Opening connection");
conn.Open();
using (var command = new NpgsqlCommand("DROP TABLE IF EXISTS inventory", conn))
{
command.ExecuteNonQuery();
Console.Out.WriteLine("Finished dropping table (if existed)");
}
using (var command = new NpgsqlCommand("CREATE TABLE inventory(id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER)", conn))
{
command.ExecuteNonQuery();
Console.Out.WriteLine("Finished creating table");
}
using (var command = new NpgsqlCommand("INSERT INTO inventory (name, quantity) VALUES (@n1, @q1), (@n2, @q2), (@n3, @q3)", conn))
{
command.Parameters.AddWithValue("n1", "banana");
command.Parameters.AddWithValue("q1", 150);
command.Parameters.AddWithValue("n2", "orange");
command.Parameters.AddWithValue("q2", 154);
command.Parameters.AddWithValue("n3", "apple");
command.Parameters.AddWithValue("q3", 100);
int nRows = command.ExecuteNonQuery();
Console.Out.WriteLine(String.Format("Number of rows inserted={0}", nRows));
}
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 2:データの読み取り
接続し、SELECT SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。 このコードでは、NpgsqlCommand クラスと次のメソッドを使用します。
- Open(): PostgreSQL への接続を確立します。
- CreateCommand() および ExecuteReader(): データベース コマンドを実行します。
- Read(): 結果のレコードに進みます。
- GetInt32 () および GetString (): レコード内の値を解析します。
重要
Host、DBName、User、Password の各パラメーターは、サーバーとデータベースの作成時に指定した値に置き換えてください。
using System;
using Npgsql;
namespace Driver
{
public class AzurePostgresRead
{
// Obtain connection string information from the portal
//
private static string Host = "mydemoserver.postgres.database.azure.com";
private static string User = "mylogin";
private static string DBname = "postgres";
private static string Password = "<server_admin_password>";
private static string Port = "5432";
static void Main(string[] args)
{
// Build connection string using parameters from portal
//
string connString =
String.Format(
"Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
Host,
User,
DBname,
Port,
Password);
using (var conn = new NpgsqlConnection(connString))
{
Console.Out.WriteLine("Opening connection");
conn.Open();
using (var command = new NpgsqlCommand("SELECT * FROM inventory", conn))
{
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(
string.Format(
"Reading from table=({0}, {1}, {2})",
reader.GetInt32(0).ToString(),
reader.GetString(1),
reader.GetInt32(2).ToString()
)
);
}
reader.Close();
}
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 3:データの更新
接続し、UPDATE SQL ステートメントを使用してデータを更新するには、次のコードを使用します。 このコードでは、NpgsqlCommand クラスと次のメソッドを使用します。
- Open(): Azure Database for PostgreSQL フレキシブル サーバーへの接続を確立します。
- CreateCommand (): CommandText プロパティを設定します。
- ExecuteNonQuery (): データベース コマンドを実行するメソッドです。
重要
Host、DBName、User、Password の各パラメーターは、サーバーとデータベースの作成時に指定した値に置き換えてください。
using System;
using Npgsql;
namespace Driver
{
public class AzurePostgresUpdate
{
// Obtain connection string information from the portal
//
private static string Host = "mydemoserver.postgres.database.azure.com";
private static string User = "mylogin";
private static string DBname = "postgres";
private static string Password = "<server_admin_password>";
private static string Port = "5432";
static void Main(string[] args)
{
// Build connection string using parameters from portal
//
string connString =
String.Format(
"Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
Host,
User,
DBname,
Port,
Password);
using (var conn = new NpgsqlConnection(connString))
{
Console.Out.WriteLine("Opening connection");
conn.Open();
using (var command = new NpgsqlCommand("UPDATE inventory SET quantity = @q WHERE name = @n", conn))
{
command.Parameters.AddWithValue("n", "banana");
command.Parameters.AddWithValue("q", 200);
int nRows = command.ExecuteNonQuery();
Console.Out.WriteLine(String.Format("Number of rows updated={0}", nRows));
}
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 4:データの削除
接続し、DELETE SQL ステートメントを使用してデータを削除するには、次のコードを使用します。
このコードでは、NpgsqlCommand クラスと Open() メソッドを使って、Azure Database for PostgreSQL フレキシブル サーバー データベースへの接続を確立します。 その後、CreateCommand() メソッドを使用して、CommandText プロパティを設定し、ExecuteNonQuery() メソッドを呼び出して、データベース コマンドを実行します。
重要
Host、DBName、User、Password の各パラメーターは、サーバーとデータベースの作成時に指定した値に置き換えてください。
using System;
using Npgsql;
namespace Driver
{
public class AzurePostgresDelete
{
// Obtain connection string information from the portal
//
private static string Host = "mydemoserver.postgres.database.azure.com";
private static string User = "mylogin@mydemoserver";
private static string DBname = "postgres";
private static string Password = "<server_admin_password>";
private static string Port = "5432";
static void Main(string[] args)
{
// Build connection string using parameters from portal
//
string connString =
String.Format(
"Server={0}; User Id={1}; Database={2}; Port={3}; Password={4};SSLMode=Prefer",
Host,
User,
DBname,
Port,
Password);
using (var conn = new NpgsqlConnection(connString))
{
Console.Out.WriteLine("Opening connection");
conn.Open();
using (var command = new NpgsqlCommand("DELETE FROM inventory WHERE name = @n", conn))
{
command.Parameters.AddWithValue("n", "orange");
int nRows = command.ExecuteNonQuery();
Console.Out.WriteLine(String.Format("Number of rows deleted={0}", nRows));
}
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
リソースをクリーンアップする
このクイックスタートで使用したすべてのリソースをクリーンアップするには、次のコマンドを使用してリソース グループを削除します。
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes