C#でSQLトランザクションを使用する方法


  1. SqlConnectionとSqlTransactionを使用する方法:
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (SqlTransaction transaction = connection.BeginTransaction())
    {
        try
        {
            // トランザクション内で実行するSQLコマンドを作成する
            SqlCommand command1 = new SqlCommand("INSERT INTO TableName (Column1, Column2) VALUES (Value1, Value2)", connection, transaction);
            SqlCommand command2 = new SqlCommand("UPDATE TableName SET Column1 = NewValue WHERE Condition", connection, transaction);

            // トランザクション内のコマンドを実行する
            command1.ExecuteNonQuery();
            command2.ExecuteNonQuery();

            // トランザクションをコミットする
            transaction.Commit();

            Console.WriteLine("トランザクションが正常に完了しました。");
        }
        catch (Exception ex)
        {
            // トランザクションをロールバックする
            transaction.Rollback();

            Console.WriteLine("トランザクション中にエラーが発生しました: " + ex.Message);
        }
    }
}
  1. TransactionScopeクラスを使用する方法:
using (TransactionScope scope = new TransactionScope())
{
    try
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // トランザクション内で実行するSQLコマンドを作成する
            SqlCommand command1 = new SqlCommand("INSERT INTO TableName (Column1, Column2) VALUES (Value1, Value2)", connection);
            SqlCommand command2 = new SqlCommand("UPDATE TableName SET Column1 = NewValue WHERE Condition", connection);

            // トランザクション内のコマンドを実行する
            command1.ExecuteNonQuery();
            command2.ExecuteNonQuery();
        }

        scope.Complete();

        Console.WriteLine("トランザクションが正常に完了しました。");
    }
    catch (Exception ex)
    {
        Console.WriteLine("トランザクション中にエラーが発生しました: " + ex.Message);
    }
}

以上が、C#でSQLトランザクションを使用する方法の例です。これらの方法を使用することで、データベース操作をトランザクション単位で実行し、データの整合性を保つことができます。