MySqlConnectorを使ってC#からMySQLに接続し、データの登録や取得をする方法について解説します。
※Entity Framework Core を使ってMySQLを操作する方法については下記の記事をご参照ください。
環境
- Visual Studio 2022
- .NET 8
- MySQL 8.0.36
準備1(MySQLにデータベースを作成)
事前に、今回接続するデータベース(スキーマ)を作成しておきます。
既存のデータベースに接続する場合はこの手順は不要です。
※MySQLをまだインストールしていない方はこちらからインストーラをダウンロードしてください。
https://dev.mysql.com/downloads/mysql/
今回は「test」という名前のデータベースを作成します。
MySQL Command Line Clientなどを使って下記のSQLを実行してください。(MySQL Workbench などのGUIツールで作っても構いません)
CREATE DATABASE test;
SHOW DATABASES;
データベースが作成されたことを確認します。
準備2(プロバイダーのインストール)
Visual Studioで新しいプロジェクトを作成します。今回はコンソールアプリ(※最上位レベルのステートメントを使用)で解説します。
プロジェクトが起動したら、ソリューションエクスプローラーからプロジェクト名を右クリックし、「NuGetパッケージの管理」をクリックします。
「参照」で「MySqlConnector」と検索し、表示された「MySqlConnector」をインストールしてください。
※MySQLに接続する他のプロバイダーとしては、公式(Oracle社)が提供する「MySql.Data」がありますが、今回はパフォーマンスがより優れるとされる「MySqlConnector」を使用します。
【参考】https://github.com/mysql-net/MySqlConnector
C#からMySQLに接続してSQLを実行
それではC#からローカルのMySQLに接続して、テーブルの内容を取得してみましょう。
以下のプログラムを実行すると、テーブル内のデータがコンソール上に表示されるはずです。
using MySqlConnector;
// 接続文字列
var connectionString = "Server=localhost;User ID=root;Password=<設定したパスワード>;Database=test";
// 接続やSQL実行に必要なインスタンスの生成
using (var connection = new MySqlConnection(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"]}");
}
}
なお、接続文字列には以下の4つを指定する必要があります。
- Server:接続先サーバのホスト名。自PC内のMySQLに接続する場合は「localhost」を指定
- User ID:接続するユーザー名。今回はデフォルトの「root」を使用
- Password:設定したパスワード。
- Database:接続先のデータベース名。今回は事前に作成した「test」を指定
他にも接続オプションがあります。詳細については公式ドキュメントを参照してください。
実行結果
無事コンソール上にテーブル内容が表示されました。
参考
UPDATE文やDELETE文の実行方法については、下記のSQL Server向け記事を参考にしてください。(MySqlConnectorがSqlClientに変わるだけで基本的な使い方は同じです。)
公式ドキュメント(MySqlConnector)