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

【C#】MySQLに接続して直接SQLを実行する

C#

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)

High-Performance .NET MySQL Driver - MySqlConnector
MySqlConnector is a high-performance, asynchronous C# ADO.NET driver for MySQL Server, MariaDB, Amazon Aurora, Azure Dat...
C#
hiranote

コメント

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