プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

# Rollback()

このメソッドは、データベース・トランザクションをロールバックします。

宣言

    // C#
    public override void Rollback();

実装

`IDbTransaction`

例外

`InvalidOperationException` - トランザクションはすでに正常に完了しており、ロールバックされているか、または関連した接続がクローズされています。

備考

`Rollback()`の後、`Rollback`によりトランザクションが終了するため、`OracleTransaction`オブジェクトはそれ以上使用されません。

例

    // Database Setup, if you have not done so yet.
    /*
    connect scott/tiger@oracle
    DROP TABLE MyTable;
    CREATE TABLE MyTable (MyColumn NUMBER);

    */

    // C#

    using System;
    using System.Data;
    using Oracle.DataAccess.Client;

    class RollbackSample
    {
      static void Main()
      {
        // Drop & Create MyTable as indicated previously in Database Setup

        // This sample starts a transaction and inserts one record into MyTable.
        // It then rollsback the transaction, the number of rows remains the same

        string constr = "User Id=scott;Password=tiger;Data Source=oracle";
        OracleConnection con = new OracleConnection(constr);
        con.Open();

        OracleCommand cmd = con.CreateCommand();

        // Check the number of rows in MyTable before transaction
        cmd.CommandText = "SELECT COUNT(*) FROM MyTable";
        int myTableCount = int.Parse(cmd.ExecuteScalar().ToString());

        // Print the number of rows in MyTable
        Console.WriteLine("myTableCount = " + myTableCount);

        // Start a transaction
        OracleTransaction txn = con.BeginTransaction(
          IsolationLevel.ReadCommitted);

        // Insert a row into MyTable
        cmd.CommandText = "INSERT INTO MyTable VALUES (1)";
        cmd.ExecuteNonQuery();

        // Rollback the transaction
        txn.Rollback();

        // Check the number of rows in MyTable after transaction
        cmd.CommandText = "SELECT COUNT(*) FROM MyTable";
        myTableCount = int.Parse(cmd.ExecuteScalar().ToString());

        // Prints the number of rows, should remain the same
        Console.WriteLine("myTableCount = " + myTableCount);

        txn.Dispose();
        cmd.Dispose();

        con.Close();
        con.Dispose();
      }
    }

関連項目:

- Oracle.DataAccess.ClientおよびOracle.ManagedDataAccess.Clientのネームスペース

- OracleTransactionクラス

- OracleTransactionメンバー