次の方法で共有


OracleConnection.BeginTransaction メソッド ()

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

データベースでトランザクションを開始します。

Overloads Public Function BeginTransaction() As OracleTransaction
[C#]
public OracleTransaction BeginTransaction();
[C++]
public: OracleTransaction* BeginTransaction();
[JScript]
public function BeginTransaction() : OracleTransaction;

戻り値

新しいトランザクションを表すオブジェクト。

例外

例外の種類 条件
InvalidOperationException 並列トランザクションはサポートされていません。

解説

トランザクションをコミットまたはロールバックするには、明示的に Commit メソッドまたは Rollback メソッドを使用する必要があります。

.NET Framework Data Provider for Oracle のトランザクション管理モデルを正しく実行するために、データベースが提供するモデルなどの他のトランザクション管理モデルは使用しないでください。

メモ   分離レベルを指定しない場合は、既定の分離レベルが使用されます。 BeginTransaction メソッドを使用して分離レベルを指定するには、 il パラメータを受け取るオーバーロードを使用します。

使用例

[Visual Basic, C#, C++] OracleConnectionOracleTransaction を作成する例を次に示します。この例では、 BeginTransactionCommitRollback の各メソッドの使い方も示します。

 
Public Sub RunOracleTransaction(myConnString As String)
    Dim myConnection As New OracleConnection(myConnString)
    myConnection.Open()
    
    Dim myCommand As OracleCommand = myConnection.CreateCommand()
    Dim myTrans As OracleTransaction
       
    ' Start a local transaction
    myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
    ' Assign transaction object for a pending local transaction
    myCommand.Transaction = myTrans
       
    Try
        myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
        myCommand.ExecuteNonQuery()
        myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
        myCommand.ExecuteNonQuery()
        myTrans.Commit()
        Console.WriteLine("Both records are written to database.")
    Catch e As Exception
        myTrans.Rollback()
        Console.WriteLine(e.ToString())
        Console.WriteLine("Neither record was written to database.")
    Finally
        myConnection.Close()
    End Try
End Sub

[C#] 
public void RunOracleTransaction(string myConnString)
{
   OracleConnection myConnection = new OracleConnection(myConnString);
   myConnection.Open();

   OracleCommand myCommand = myConnection.CreateCommand();
   OracleTransaction myTrans;

   // Start a local transaction
   myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
   // Assign transaction object for a pending local transaction
   myCommand.Transaction = myTrans;

   try
   {
     myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
     myCommand.ExecuteNonQuery();
     myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
     myCommand.ExecuteNonQuery();
     myTrans.Commit();
     Console.WriteLine("Both records are written to database.");
   }
   catch(Exception e)
   {
     myTrans.Rollback();
     Console.WriteLine(e.ToString());
     Console.WriteLine("Neither record was written to database.");
   }
   finally
   {
     myConnection.Close();
   }
}

[C++] 
public:
 void RunOracleTransaction(String* myConnString)
 {
    OracleConnection* myConnection = new OracleConnection(myConnString);
    myConnection->Open();

    OracleCommand* myCommand = myConnection->CreateCommand();
    OracleTransaction* myTrans;

    // Start a local transaction
    myTrans = myConnection->BeginTransaction(IsolationLevel::ReadCommitted);
    // Assign transaction object for a pending local transaction
    myCommand->Transaction = myTrans;

    try
    {
      myCommand->CommandText = S"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
      myCommand->ExecuteNonQuery();
      myCommand->CommandText = S"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
      myCommand->ExecuteNonQuery();
      myTrans->Commit();
      Console::WriteLine(S"Both records are written to database.");
    }
    catch(Exception* e)
    {
      myTrans->Rollback();
      Console::WriteLine(e);
      Console::WriteLine(S"Neither record was written to database.");
    }
    __finally
    {
      myConnection->Close();
    }
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

OracleConnection クラス | OracleConnection メンバ | System.Data.OracleClient 名前空間 | OracleConnection.BeginTransaction オーバーロードの一覧 | Commit | Rollback