クイックスタート: .NET (C#) を使用して Azure Database for MySQL - フレキシブル サーバーに接続してデータを照会する
このクイックスタートでは、C# アプリケーションを使用して Azure Database for MySQL フレキシブル サーバー インスタンスに接続する方法を紹介します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。
前提条件
このクイックスタートでは、以下が必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、「Azure 無料アカウントを使用して Azure Database for MySQL - フレキシブル サーバーを無料で試す」を参照してください。
- Azure Database for MySQL フレキシブル サーバー インスタンスがない場合は、「クイック スタート: Azure portal を使用して Azure Database for MySQL のインスタンスを作成する」
または「クイックスタート: Azure CLI を使用して Azure Database for MySQL - フレキシブル サーバーのインスタンスを作成する」を使用して作成します。 - パブリック アクセスとプライベート アクセスのどちらを使用しているかに基づいて、次のいずれかのアクションを実行して、接続を有効にします。
- データベースと管理者以外のユーザーを作成する
- 使用しているプラットフォーム (Windows、Ubuntu Linux、または macOS) 用の .NET SDK をインストールします。
C# プロジェクトの作成
コマンド プロンプトで、次のコマンドを実行します。
mkdir AzureMySqlExample
cd AzureMySqlExample
dotnet new console
dotnet add package MySqlConnector
接続情報の取得
Azure Database for MySQL フレキシブル サーバー インスタンスに接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。
- Azure Portal にログインします。
- Azure portal の左側のメニューにある [すべてのリソース] を選択し、作成したサーバー (例: mydemoserver) を検索します。
- サーバー名を選択します。
- サーバーの [概要] パネルから、 [サーバー名] と [サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。
手順 1: データの接続と挿入
接続を確立し、SQL ステートメントの CREATE TABLE
と INSERT INTO
を使ってデータを読み込むには、次のコードを使います。 コードは、MySqlConnection
クラスの以下のメソッドを使用します。
- OpenAsync() は、MySQL への接続を確立します。
- CreateCommand () は、CommandText プロパティを設定します
- ExecuteNonQueryAsync() は、データベース コマンドを実行します。
Server
、Database
、UserID
、Password
の各パラメーターの値は、サーバーとデータベースを作成するときに指定した値に置き換えてください。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlCreate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DROP TABLE IF EXISTS inventory;";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished dropping table (if existed)");
command.CommandText = "CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);";
await command.ExecuteNonQueryAsync();
Console.WriteLine("Finished creating table");
command.CommandText = @"INSERT INTO inventory (name, quantity) VALUES (@name1, @quantity1),
(@name2, @quantity2), (@name3, @quantity3);";
command.Parameters.AddWithValue("@name1", "banana");
command.Parameters.AddWithValue("@quantity1", 150);
command.Parameters.AddWithValue("@name2", "orange");
command.Parameters.AddWithValue("@quantity2", 154);
command.Parameters.AddWithValue("@name3", "apple");
command.Parameters.AddWithValue("@quantity3", 100);
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows inserted={0}", rowCount));
}
// connection will be closed by the 'using' block
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 2:データの読み取り
接続を確立し、SELECT
SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。 コードは、MySqlConnection
クラスと以下のメソッドを使用します。
- OpenAsync() は、MySQL への接続を確立します。
- CreateCommand() は、CommandText プロパティを設定します。
- ExecuteReaderAsync() は、データベース コマンドを実行します。
- ReadAsync() は、結果のレコードに進みます。 GetInt32 と GetString を使用して、レコード内の値を解析します。
Server
、Database
、UserID
、Password
の各パラメーターの値は、サーバーとデータベースを作成するときに指定した値に置き換えてください。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlRead
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER@YOUR-SERVER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM inventory;";
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine(string.Format(
"Reading from table=({0}, {1}, {2})",
reader.GetInt32(0),
reader.GetString(1),
reader.GetInt32(2)));
}
}
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 3:データの更新
接続を確立し、UPDATE
SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。 コードは、MySqlConnection
クラスと以下のメソッドを使用します。
- OpenAsync() は、MySQL への接続を確立します。
- CreateCommand() は、CommandText プロパティを設定します
- ExecuteNonQueryAsync() は、データベース コマンドを実行します。
Server
、Database
、UserID
、Password
の各パラメーターの値は、サーバーとデータベースを作成するときに指定した値に置き換えてください。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlUpdate
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "UPDATE inventory SET quantity = @quantity WHERE name = @name;";
command.Parameters.AddWithValue("@quantity", 200);
command.Parameters.AddWithValue("@name", "banana");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows updated={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
手順 4:データの削除
接続を確立し、DELETE
SQL ステートメントを使用してデータを削除するには、次のコードを使用します。
コードは、MySqlConnection
クラスと以下のメソッドを使用します
- OpenAsync() は、MySQL への接続を確立します。
- CreateCommand() は、CommandText プロパティを設定します。
- ExecuteNonQueryAsync() は、データベース コマンドを実行します。
Server
、Database
、UserID
、Password
の各パラメーターの値は、サーバーとデータベースを作成するときに指定した値に置き換えてください。
using System;
using System.Threading.Tasks;
using MySqlConnector;
namespace AzureMySqlExample
{
class MySqlDelete
{
static async Task Main(string[] args)
{
var builder = new MySqlConnectionStringBuilder
{
Server = "YOUR-SERVER.mysql.database.azure.com",
Database = "YOUR-DATABASE",
UserID = "USER",
Password = "PASSWORD",
SslMode = MySqlSslMode.Required,
};
using (var conn = new MySqlConnection(builder.ConnectionString))
{
Console.WriteLine("Opening connection");
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "DELETE FROM inventory WHERE name = @name;";
command.Parameters.AddWithValue("@name", "orange");
int rowCount = await command.ExecuteNonQueryAsync();
Console.WriteLine(String.Format("Number of rows deleted={0}", rowCount));
}
Console.WriteLine("Closing connection");
}
Console.WriteLine("Press RETURN to exit");
Console.ReadLine();
}
}
}
リソースをクリーンアップする
このクイックスタートで使用したすべてのリソースをクリーンアップするには、次のコマンドを使用してリソース グループを削除します。
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes