Csharp/C Sharp by API/System.Data.SqlClient/SqlTransaction

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

SqlTransaction.Rollback

 

using System;
using System.Data;
using System.Data.SqlClient;
class Savepoint {
    public static void Main() {
        SqlConnection mySqlConnection =
          new SqlConnection(
            "server=localhost;database=Northwind;uid=sa;pwd=sa"
          );
        mySqlConnection.Open();
        SqlTransaction mySqlTransaction = mySqlConnection.BeginTransaction();
        SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
        mySqlCommand.Transaction = mySqlTransaction;
        mySqlCommand.rumandText =
          "INSERT INTO Customers ( " +
          "  CustomerID, CompanyName " +
          ") VALUES ( " +
          "  "J8COM", "J8 Company" " +
          ")";
        int numberOfRows = mySqlCommand.ExecuteNonQuery();
        Console.WriteLine("Number of rows inserted = " + numberOfRows);
        mySqlTransaction.Save("SaveCustomer");
        mySqlCommand.rumandText = "INSERT INTO Orders (CustomerID ) VALUES ( "J8COM" )";
        numberOfRows = mySqlCommand.ExecuteNonQuery();
        Console.WriteLine("Number of rows inserted = " + numberOfRows);
        mySqlTransaction.Rollback("SaveCustomer");
        mySqlCommand.rumandText =
              "SELECT CustomerID, CompanyName " +
              "FROM Customers " +
              "WHERE CustomerID = "J8COM"";
        SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
        while (mySqlDataReader.Read()) {
            Console.WriteLine("mySqlDataReader[\" CustomerID\"] = " +
              mySqlDataReader["CustomerID"]);
            Console.WriteLine("mySqlDataReader[\" CompanyName\"] = " +
              mySqlDataReader["CompanyName"]);
        }
        mySqlDataReader.Close();
        mySqlCommand.rumandText = "DELETE FROM Customers WHERE CustomerID = "J8COM"";
        numberOfRows = mySqlCommand.ExecuteNonQuery();
        Console.WriteLine("Number of rows deleted = " + numberOfRows);
        mySqlTransaction.rumit();
        mySqlConnection.Close();
    }
}