ヘッダーをスキップ

Oracle® Data Provider for .NET開発者ガイド
リリース9.2.0.4

部品番号 B13807-01
Go To Table Of Contents
目次
Go To Index
索引

Go to previous page Go to beginning of chapter Go to next page

Oracle.DataAccess.Clientネームスペース、21/30


OracleTransactionクラス

ローカル・トランザクションを表すOracleTransactionオブジェクト。

クラスの継承

Object

  MarshalByRefObject

    OracleTransaction

宣言
// C#
public sealed class OracleTransaction : MarshalByRefObject,
    IDbTransaction, IDisposable
スレッド・セーフティ

インスタンス・メソッドではスレッド・セーフティを保証しませんが、すべてのpublic staticメソッドはスレッド・セーフです。

備考

アプリケーションは、OracleConnectionオブジェクトでBeginTransactionをコールして、OracleTransactionオブジェクトを作成します。OracleTransactionオブジェクトは、次の2つのモードのいずれかで作成できます。

その他のモードで作成すると、例外が発生します。

トランザクションのコンテキストでのDDL文の実行は、OracleTransactionオブジェクトの状態に反映されない暗黙的コミットになるのでお薦めしません。

セーブポイントに関連するすべての操作は、現在のローカル・トランザクションに含まれます。トランザクションで実行されるコミットおよびロールバックなどの操作は、既存のDataSetのデータには影響しません。

// C#
//  Starts a transaction and inserts one record. If insert fails, rolls back
//  the transaction. Otherwise, commits the transaction.

...
string ConStr = "User Id=myschema;Password=mypassword;" +
     "Data Source=oracle;";
OracleConnection con = new OracleConnection(ConStr);
con.Open();

//Create an OracleCommand object using the connection object
OracleCommand cmd = new OracleCommand("", con);

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

try
  {
    cmd.CommandText = "insert into mytable values (99, 'foo')";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
    txn.Commit();
    Console.WriteLine("One record is inserted into the database table.");
  }
    catch(Exception e)
  {
    txn.Rollback();
    Console.WriteLine("No record was inserted into the database table.");
  }
...

要件

ネームスペース: Oracle.DataAccess.Client

アセンブリ: Oracle.DataAccess.dll

関連項目:

OracleTransactionのメンバー

OracleTransactionのメンバーを次の表に示します。

OracleTransactionのstaticメソッド

OracleTransactionのstaticメソッドを表4-112に示します。

表4-112 OracleTransactionのstaticメソッド 
メソッド 説明

Equals

Objectから継承されます(オーバーロード)。

OracleTransactionのプロパティ

OracleTransactionのプロパティを表4-113に示します。

表4-113 OracleTransactionのプロパティ 
名前 説明

IsolationLevel

トランザクションの分離レベルを指定します。

Connection

トランザクションに関連付けられた接続を指定します。

OracleTransactionのpublicメソッド

OracleTransactionのpublicメソッドを表4-114に示します。

表4-114 OracleTransactionのpublicメソッド 
publicメソッド 説明

Commit

データベース・トランザクションをコミットします。

CreateObjRef

MarshalByRefObjectから継承されます。

Dispose

OracleTransactionオブジェクトによって使用されているリソースを解放します。

Equals

Objectから継承されます(オーバーロード)。

GetHashCode

Objectから継承されます。

GetLifetimeService

MarshalByRefObjectから継承されます。

GetType

Objectから継承されます。

InitializeLifetimeService

MarshalByRefObjectから継承されます。

Rollback

データベース・トランザクションをロールバックします(オーバーロード)。

Save

現在のトランザクション内にセーブポイントを作成します。

ToString

Objectから継承されます。

関連項目:

OracleTransactionのstaticメソッド

OracleTransactionのstaticメソッドを表4-115に示します。

表4-115 OracleTransactionのstaticメソッド 
メソッド 説明

Equals

Objectから継承されます(オーバーロード)。

関連項目:

OracleTransactionのプロパティ

OracleTransactionのプロパティを表4-116に示します。

表4-116 OracleTransactionのプロパティ 
名前 説明

IsolationLevel

トランザクションの分離レベルを指定します。

Connection

トランザクションに関連付けられた接続を指定します。

関連項目:

IsolationLevel

このプロパティは、トランザクションの分離レベルを指定します。

宣言
// C#
public IsolationLevel IsolationLevel {get;}
プロパティ値

IsolationLevel

実装

IDbTransaction

例外

InvalidOperationException: トランザクションはすでに完了しています。

備考

デフォルトはIsolationLevel.ReadCommittedです。

関連項目:

Connection

このプロパティは、トランザクションに関連付けられた接続を指定します。

宣言
// C#
public OracleConnection Connection {get;}
プロパティ値

Connection

実装

IDbTransaction

備考

このプロパティは、トランザクションに関連付けられたOracleConnectionオブジェクトを示します。

関連項目:

OracleTransactionのpublicメソッド

OracleTransactionのpublicメソッドを表4-117に示します。

表4-117 OracleTransactionのpublicメソッド 
publicメソッド 説明

Commit

データベース・トランザクションをコミットします。

CreateObjRef

MarshalByRefObjectから継承されます。

Dispose

OracleTransactionオブジェクトによって使用されているリソースを解放します。

Equals

Objectから継承されます(オーバーロード)。

GetHashCode

Objectから継承されます。

GetLifetimeService

MarshalByRefObjectから継承されます。

GetType

Objectから継承されます。

InitializeLifetimeService

MarshalByRefObjectから継承されます。

Rollback

データベース・トランザクションをロールバックします(オーバーロード)。

Save

現在のトランザクション内にセーブポイントを作成します。

ToString

Objectから継承されます。

関連項目:

Commit

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

宣言
// C#
public void Commit();
実装

IDbTransaction

例外

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

備考

正常にコミットされると、トランザクションは完了状態になります。

// C#
//  Starts a transaction and inserts one record. If insert fails, rolls back
//  the transaction. Otherwise, commits the transaction.

...
string ConStr = "User Id=myschema;Password=mypassword;" +
     "Data Source=oracle;";
OracleConnection con = new OracleConnection(ConStr);
con.Open();

//Create an OracleCommand object using the connection object
OracleCommand cmd = new OracleCommand("", con);

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

try
  {
    cmd.CommandText = "insert into mytable values (99, 'foo')";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
    txn.Commit();
    Console.WriteLine("One record was inserted into the database table.");
  }
    catch(Exception e)
  {
    txn.Rollback();
    Console.WriteLine("No record was inserted into the database table.");
  }
...

関連項目:

Dispose

このメソッドは、OracleTransactionオブジェクトによって使用されているリソースを解放します。

宣言
// C#
public void Dispose();
実装

IDisposable

備考

このメソッドは、OracleTransactionオブジェクトが保持する管理リソースおよび非管理リソースの両方を解放します。トランザクションが完了状態でない場合は、そのトランザクションをロールバックしようとします。

関連項目:

Rollback

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

オーバーロード一覧:

Rollback()

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

宣言
// C#
public void Rollback();
実装

IDbTransaction

例外

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

備考

Rollback()の後は、Rollbackがトランザクションを終了するので、OracleTransactionオブジェクトは使用できなくなります。

// C#
//  Starts a transaction and inserts one record. Then rolls back the
//  transaction.

...
string ConStr = "User Id=myschema;Password=mypassword;" +
   "Data Source=oracle;";
OracleConnection con = new OracleConnection(ConStr);
con.Open();

OracleCommand cmd = Con.CreateCommand();

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

cmd.CommandText = "insert into mytable values (99, 'foo')";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
txn.Rollback();
Console.WriteLine("Nothing was inserted into the database table.");
...

関連項目:

Rollback(string)

このメソッドは、現在のトランザクション内のセーブポイントまで、データベース・トランザクションをロールバックします。

宣言
// C#
public void Rollback(string savepointName);
パラメータ
例外

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

備考

セーブポイントまでロールバックした後も、現在のトランザクションはアクティブのままとなり、他の操作に使用できます。

セーブポイントは、大/小文字を区別せずにデータベースに作成されるので、指定されたsavepointNameと、Saveメソッドを使用して作成されるsavepointNameは、大/小文字が一致する必要はありません。

関連項目:

Save

このメソッドは、現在のトランザクション内にセーブポイントを作成します。

宣言
// C#
public void Save(string savepointName);
パラメータ
例外

InvalidOperationException: トランザクションはすでに完了しています。

備考

セーブポイントを作成した後、トランザクションは完了状態にならず、他の操作に使用できます。

指定されたsavepointNameは、大/小文字が区別されずにデータベースに作成されます。Rollbackメソッドをコールすると、savepointNameまでロールバックされます。これにより、トランザクション全体ではなく、トランザクションの一部をロールバックできます。

// C#
//  Starts a transaction and inserts two records. Creates a savepoint
//  within the current transaction for the first insert. Then rolls back to
//  the savepoint to commit the first record.

...
string ConStr = "User Id=myschema;Password=mypassword;" +
     "Data Source=oracle;";
OracleConnection con = new OracleConnection(ConStr);
con.Open();

OracleCommand cmd = Con.CreateCommand();

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

cmd.CommandText = "insert into mytable values (99, 'foo')";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();

//Create a savepoint
txn.Save("MySavePoint");

cmd.CommandText = "insert into mytable values (100, 'bar')";
cmd.ExecuteNonQuery();

//Rollback to the savepoint
txn.Rollback("MySavePoint");

//Commit the first insert
txn.Commit();

関連項目:


Go to previous page Go to beginning of chapter Go to next page
Oracle
Copyright © 2002, 2003 Oracle Corporation.

All Rights Reserved.
Go To Table Of Contents
目次
Go To Index
索引