OracleConnection.BeginTransaction 方法

定义

在数据库中开始一个事务。Begins a transaction at the database.

重载

BeginTransaction()

在数据库中开始一个事务。Begins a transaction at the database.

BeginTransaction(IsolationLevel)

使用指定的 IsolationLevel 值在数据库中开始一个事务。Begins a transaction at the database with the specified IsolationLevel value.

BeginTransaction()

在数据库中开始一个事务。Begins a transaction at the database.

public:
 System::Data::OracleClient::OracleTransaction ^ BeginTransaction();
public System.Data.OracleClient.OracleTransaction BeginTransaction ();
member this.BeginTransaction : unit -> System.Data.OracleClient.OracleTransaction
override this.BeginTransaction : unit -> System.Data.OracleClient.OracleTransaction
Public Function BeginTransaction () As OracleTransaction

返回

OracleTransaction

表示新事务的对象。An object representing the new transaction.

例外

不支持并行事务。Parallel transactions are not supported.

示例

下面的示例创建一个 OracleConnection 和一个 OracleTransactionThe following example creates an OracleConnection and an OracleTransaction. 它还演示了如何使用 BeginTransactionCommitRollback 方法。It also demonstrates how to use the BeginTransaction, Commit, and Rollback methods.

public void RunOracleTransaction(string connectionString)
{
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        connection.Open();

        OracleCommand command = connection.CreateCommand();
        OracleTransaction transaction;

        // Start a local transaction
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
        // Assign transaction object for a pending local transaction
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
            command.ExecuteNonQuery();
            command.CommandText =
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
            command.ExecuteNonQuery();
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception e)
        {
            transaction.Rollback();
            Console.WriteLine(e.ToString());
            Console.WriteLine("Neither record was written to database.");
        }
    }
}
Public Sub RunOracleTransaction(ByVal connectionString As String)
    Using connection As New OracleConnection(connectionString)
        connection.Open()

        Dim command As OracleCommand = connection.CreateCommand()
        Dim transaction As OracleTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
        ' Assign transaction object for a pending local transaction
        command.Transaction = transaction

        Try
            command.CommandText = _
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
            command.ExecuteNonQuery()
            command.CommandText = _
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
            command.ExecuteNonQuery()
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")
        Catch e As Exception
            transaction.Rollback()
            Console.WriteLine(e.ToString())
            Console.WriteLine("Neither record was written to database.")
        End Try
    End Using
End Sub

注解

若要提交或回滚事务,则必须显式使用 CommitRollback 方法。To commit or roll back the transaction, you must explicitly use the Commit or Rollback methods.

若要确保 Oracle 事务管理模型的 .NET Framework 数据提供程序正确执行,请避免使用其他事务管理模型,如数据库提供的模型。To ensure that the .NET Framework Data Provider for Oracle transaction management model performs correctly, avoid using other transaction management models, such as those provided by the database.

备注

如果未指定隔离级别,则使用默认的隔离级别。If you do not specify an isolation level, the default isolation level is used. 若要使用方法指定隔离级别 BeginTransaction ,请使用 BeginTransaction 重载。To specify an isolation level with the BeginTransaction method, use the BeginTransaction overload.

另请参阅

适用于

产品 Introduced

BeginTransaction(IsolationLevel)

使用指定的 IsolationLevel 值在数据库中开始一个事务。Begins a transaction at the database with the specified IsolationLevel value.

public:
 System::Data::OracleClient::OracleTransaction ^ BeginTransaction(System::Data::IsolationLevel il);
public System.Data.OracleClient.OracleTransaction BeginTransaction (System.Data.IsolationLevel il);
member this.BeginTransaction : System.Data.IsolationLevel -> System.Data.OracleClient.OracleTransaction
override this.BeginTransaction : System.Data.IsolationLevel -> System.Data.OracleClient.OracleTransaction
Public Function BeginTransaction (il As IsolationLevel) As OracleTransaction

参数

il
IsolationLevel

该连接的事务隔离级别。The transaction isolation level for this connection.

返回

OracleTransaction

表示新事务的对象。An object representing the new transaction.

例外

不支持并行事务。Parallel transactions are not supported.

示例

下面的示例创建一个 OracleConnection 和一个 OracleTransactionThe following example creates an OracleConnection and an OracleTransaction. 它还演示了如何使用 BeginTransactionCommitRollback 方法。It also demonstrates how to use the BeginTransaction, Commit, and Rollback methods.

public void RunOracleTransaction(string connectionString)
{
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        connection.Open();

        OracleCommand command = connection.CreateCommand();
        OracleTransaction transaction;

        // Start a local transaction
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
        // Assign transaction object for a pending local transaction
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
            command.ExecuteNonQuery();
            command.CommandText =
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
            command.ExecuteNonQuery();
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception e)
        {
            transaction.Rollback();
            Console.WriteLine(e.ToString());
            Console.WriteLine("Neither record was written to database.");
        }
    }
}
Public Sub RunOracleTransaction(ByVal connectionString As String)
    Using connection As New OracleConnection(connectionString)
        connection.Open()

        Dim command As OracleCommand = connection.CreateCommand()
        Dim transaction As OracleTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
        ' Assign transaction object for a pending local transaction
        command.Transaction = transaction

        Try
            command.CommandText = _
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
            command.ExecuteNonQuery()
            command.CommandText = _
                "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
            command.ExecuteNonQuery()
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")
        Catch e As Exception
            transaction.Rollback()
            Console.WriteLine(e.ToString())
            Console.WriteLine("Neither record was written to database.")
        End Try
    End Using
End Sub

注解

若要提交或回滚事务,则必须显式使用 CommitRollback 方法。To commit or roll back the transaction, you must explicitly use the Commit or Rollback methods.

若要确保 Oracle 事务管理模型的 .NET Framework 数据提供程序正确执行,请避免使用其他事务管理模型,如数据库提供的模型。To ensure that the .NET Framework Data Provider for Oracle transaction management model performs correctly, avoid using other transaction management models, such as those provided by the database.

另请参阅

适用于

产品 Introduced