#環境
Windous10 HOME
Visual Studio 2019 Community
MySQL 8.0
#やったこと
学習のためにVisual Studio C#でMySQLのCRUD操作ができるコンソールアプリを作成する。
※CRUD → CREATE、READ、UPDATE、DELETE
#参考
https://qiita.com/yuzooho/items/5d608f3b84a2037cada0
https://qiita.com/kazumi75kitty/items/9953bb84edd7717bc90a
https://mikeda.hatenablog.com/entry/20090419/1240123566
上記を参考にさせていただきました。
ありがとうございます。
#環境設定
- 「新しいプロジェクトの作成」からコンソールアプリ(.NET Framework)を選択して作成します。
※この時「C#」「Windows」「コンソール」と書かれている方選ばないと後々MySQLと接続できなくなります。
- 「参照」を右クリックして「参照の追加」を選択します。
参照マネージャーの検索でMySQLと入力して「MySql.data」にチェックして「OK」を選択する。
- MySQLのコマンドを起動してデータベース「test_database」を作成します。
CREATE DATABASE test_database;
「test_database」が作成されているか確認します。
SHOW DATABASES;
「test_database」が作成されました。
#コードを記述
- CRUD操作を行うコードを記述していきます。
using System;
using MySql.Data.MySqlClient;// MySQLを使用
namespace MySQLテスト
{
class Program
{
// MySQLへの接続情報
private static readonly string server = "localhost";
private static readonly string database = "test_database";//使用するデータベース
private static readonly string user = "root";//ユーザー名
private static readonly string pass = "password";//インストール時に設定したパスワード
private static readonly string charset = "utf8";
// MySQLへの接続
private static readonly string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3};Charset={4}", server, database, user, pass, charset);
// テーブル作成SQL
private static readonly string MysqlTable = "test_table";//テーブル名
private static readonly string CreateTableSql = "CREATE TABLE IF NOT EXISTS " + database + "." + MysqlTable + "(id int, name varchar(32), address varchar(32))";
//データ挿入SQL
private static readonly string InsertData = "(1, 'Tarou', 'Shinjuku'), (2, 'Hiroshi', 'Shibuya'), (3, 'Yumi', 'Setagaya'), (4, 'miku', 'Chiyoda')";//挿入するデータ
private static readonly string InsertTableSql = "INSERT INTO " + MysqlTable + " (id, name, address) VALUES " + InsertData;
//データ抽出用SQL
private static readonly string SelectSql = "SELECT * FROM " + MysqlTable;//全てのカラムのデータを出力
//データ更新用SQL
private static readonly string UpdateSql = "UPDATE " + MysqlTable + " SET address = 'Meguro' WHERE name = 'Hiroshi'";//「Hiroshi」のaddressを「Meguro」に変更
//データ削除用SQL
private static readonly string DeleteSql = "DELETE FROM " + MysqlTable + " WHERE id = 4";//「id」が4のレコードを削除
static void Main(string[] args)
{
try
{
// コネクションオブジェクトとコマンドオブジェクトの生成
using (var connection = new MySqlConnection(connectionString))
using (var command = new MySqlCommand())
{
// コネクションオープン
connection.Open();
// テーブル作成SQLを実行
command.Connection = connection;
command.CommandText = CreateTableSql;
Console.WriteLine("テーブル「" + MysqlTable + "」を作成しました");
command.ExecuteNonQuery();
Console.WriteLine("続行するには何かキーを押してください");
Console.ReadKey();
// データ挿入用SQLを実行
command.Connection = connection;
command.CommandText = InsertTableSql;
Console.WriteLine("テーブル「" + MysqlTable + "」にデータ「" + InsertData + "」を挿入しました");
command.ExecuteNonQuery();
Console.WriteLine("続行するには何かキーを押してください");
Console.ReadKey();
// データ抽出SQLを実行
command.Connection = connection;
command.CommandText = SelectSql;
Console.WriteLine("テーブル「" + MysqlTable + "」のデータを出力します");
//カラム名を出力
MySqlDataReader reader = command.ExecuteReader();
string[] column = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
column[i] = reader.GetName(i);
Console.WriteLine(string.Join("\t", column));
//テーブルのデータを出力
while (reader.Read())
{
string[] row = new string[reader.FieldCount];
for (int i = 0; i < reader.FieldCount; i++)
row[i] = reader.GetString(i);
Console.WriteLine(string.Join("\t", row));
}
reader.Close();
Console.WriteLine("続行するには何かキーを押してください");
Console.ReadKey();
//データ更新SQL
command.Connection = connection;
command.CommandText = UpdateSql;
Console.WriteLine("ひろしの住所を目黒に変更しました");
command.ExecuteNonQuery();
Console.WriteLine("続行するには何かキーを押してください");
Console.ReadKey();
//データ削除SQL
command.Connection = connection;
command.CommandText = DeleteSql;
Console.WriteLine("idが4のデータを削除しました");
command.ExecuteNonQuery();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
テーブル作成、データ挿入・抽出・更新・削除をキー入力で進めるプログラムです。
#MySQLを確認しながら実行していく
MySQLのコマンドで確認しながら実行していきます。
Visual Studioで「デバッグ」から「デバッグなしで開始」を選択します。
実行するとテーブル「test_table」が作成されます。
MySQLで確認します。
USE test_database;
「test_database」にデータベースを切り替えます。
SHOW TABLES;
「test_table」が作成されました。
コンソールに戻って進めます。
データが挿入されます。
MySQLで確認します。
SELECT * FROM test_table;
挿入されました。
コンソールに戻って進めます。
テーブルのデータを出力しました。
先ほどMySQLで確認したデータと同じです。
このまま進めます。
「Hiroshi」の「address」が「Meguro」に変更されているか確認します
変更されました。
コンソールに戻って進めます。
id = 4のレコードが削除されているか確認します。
削除されてます。
#感想
今回はC#でMySQLを操作する基本を学びました。
確認しながら操作することで直感的に理解できたと思います。