C# mysqlでトランザクションを使用する

C#で、mysqlでトランザクションを使用するサンプルコードを記述してます。Visual Studioは、2022を使用してます。
環境
- OS windows10 pro 64bit
- Microsoft Visual Studio Community 2022
パッケージインストール
mysqlに接続するために、まずは「MySql.Data」をインストールします。
※ここでは、コンソールアプリでプロジェクトを作成してます。
ソリューションを右クリックして「NuGetパッケージの管理」をクリックします。

「参照」をクリックして「mysql」と検索して「Mysql.Data」をインストールしておきます。

トランザクションを使用
トランザクションは「MySqlTransaction」を使用すれば実現することができます。
「Program.cs」に、以下のコードを記述します。
using MySql.Data.MySqlClient;
using System;
namespace MysqlApp
{
class Program
{
static void Main(string[] args)
{
// 接続文字列
var connectionString =
"Server=192.168.100.42;Port=3306;Uid=testuser;Pwd=password;Database=foo";
// クエリ
var sql = "UPDATE tbl SET name = @name WHERE id = @id";
// インスタンスを生成
using (var connection = new MySqlConnection(connectionString))
using (var command = new MySqlCommand(sql, connection))
{
MySqlTransaction transaction = null;
try
{
// 接続
connection.Open();
command.Connection = connection;
// トランザクションを開始
transaction = connection.BeginTransaction();
command.CommandText = sql;
command.Parameters.AddWithValue("@name", "foo");
command.Parameters.AddWithValue("@id", 1);
var result = command.ExecuteNonQuery();
// 更新されなかった場合
if (result != 1)
{
Console.WriteLine("update ERROR");
// ロールバック
transaction.Rollback();
return;
}
// コミット
transaction.Commit();
//クローズ
connection.Close();
}
catch (MySqlException me)
{
Console.WriteLine("ERROR: " + me.Message);
if (transaction != null)
{
// ロールバック
transaction.Rollback();
}
}
Console.ReadKey();
}
}
}
}
これでエラー発生時は、コミットされずにロールバックされるようになります。
-
前の記事
Hasura 外部キーを作成する 2022.03.17
-
次の記事
javascript オブジェクトの配列から指定したプロパティの値を抽出する 2022.03.18
コメントを書く