IDbTransaction Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma transação a ser executada em uma fonte de dados e é implementada por provedores de dados .NET que acessam bancos de dados relacionais.
public interface class IDbTransaction : IDisposable
public interface IDbTransaction : IDisposable
type IDbTransaction = interface
interface IDisposable
Public Interface IDbTransaction
Implements IDisposable
- Derivado
- Implementações
Exemplos
O exemplo a seguir cria instâncias das classes SqlConnection derivadas e SqlTransaction. Ele também demonstra como usar os BeginTransactionmétodos e Rollback . Commit
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
}
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a local transaction
transaction = connection.BeginTransaction()
' Must assign both transaction object and connection
' to Command object for a pending local transaction.
command.Connection = connection
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
command.ExecuteNonQuery()
' Attempt to commit the transaction.
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch ex As Exception
Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
Console.WriteLine(" Message: {0}", ex.Message)
' Attempt to roll back the transaction.
Try
transaction.Rollback()
Catch ex2 As Exception
' This catch block will handle any errors that may have occurred
' on the server that would cause the rollback to fail, such as
' a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
Console.WriteLine(" Message: {0}", ex2.Message)
End Try
End Try
End Using
End Sub
Comentários
A IDbTransaction interface permite que uma classe herdada implemente uma classe Transaction, que representa a transação a ser executada em uma fonte de dados. Para obter mais informações sobre classes de transação, consulte Transações e Simultaneidade.
Um aplicativo não cria uma instância da IDbTransaction interface diretamente, mas cria uma instância de uma classe que herda IDbTransaction.
As classes herdadas IDbTransaction devem implementar os membros herdados e, normalmente, definir membros adicionais para adicionar funcionalidade específica do provedor. Por exemplo, a IDbTransaction interface define o Commit método. Por sua vez, a OleDbTransaction classe herda essa propriedade e também define o Begin método.
Notas aos Implementadores
Para promover a consistência entre os provedores de dados .NET Framework, nomeie a classe herdada no formulário Prv Transaction, em que Prv é o prefixo uniforme fornecido a todas as classes em um namespace específico do provedor de dados .NET Framework. Por exemplo, Sql é o prefixo da SqlTransaction classe no System.Data.SqlClient namespace.
Propriedades
| Nome | Description |
|---|---|
| Connection |
Especifica o objeto Connection a ser associado à transação. |
| IsolationLevel |
Especifica a IsolationLevel transação para essa transação. |
Métodos
| Nome | Description |
|---|---|
| Commit() |
Confirma a transação de banco de dados. |
| Dispose() |
Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados. (Herdado de IDisposable) |
| Rollback() |
Reverte uma transação de um estado pendente. |