SqlTransaction Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma transação Transact-SQL a ser feita numa base de dados SQL Server. Esta classe não pode ser herdada.
public ref class SqlTransaction sealed : MarshalByRefObject, IDisposable, System::Data::IDbTransaction
public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public sealed class SqlTransaction : MarshalByRefObject, IDisposable, System.Data.IDbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
inherit MarshalByRefObject
interface IDbTransaction
interface IDisposable
type SqlTransaction = class
inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits MarshalByRefObject
Implements IDbTransaction, IDisposable
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
- Herança
- Herança
- Implementações
Exemplos
O exemplo seguinte cria um SqlConnection e um SqlTransaction. Também demonstra como usar os BeginTransactionmétodos , Commit, e Rollback . A transação é revertida em caso de erro ou se for descartada sem ter sido previamente confirmada.
Try
/
Catch O tratamento de erros é usado para tratar quaisquer erros ao tentar comprometer ou reverter a transação.
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
Observações
A aplicação cria um SqlTransaction objeto ao chamar BeginTransaction o SqlConnection objeto. Todas as operações subsequentes associadas à transação (por exemplo, confirmar ou abortar a transação) são realizadas no SqlTransaction objeto.
Note
Try
/
Catch O tratamento de exceções deve ser sempre usado ao fazer commit ou reverter um SqlTransaction. Tanto Commit como Rollback gerar um InvalidOperationException se a ligação for terminada ou se a transação já tiver sido revertida no servidor.
Para mais informações sobre transações SQL Server, consulte Transações Explícitas e Transações Eficientes de Codificação.
Propriedades
| Name | Description |
|---|---|
| Connection |
Obtém o SqlConnection objeto associado à transação, ou |
| DbConnection |
Quando sobrescrito numa classe derivada, obtém-se o DbConnection objeto associado à transação. (Herdado de DbTransaction) |
| IsolationLevel |
Especifica o IsolationLevel para esta transação. |
Métodos
| Name | Description |
|---|---|
| Commit() |
Faz commit na transação da base de dados. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta os recursos que o objeto detém. |
| Dispose() |
Liberta os recursos não geridos usados pelo DbTransaction. (Herdado de DbTransaction) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo DbTransaction e opcionalmente liberta os recursos geridos. (Herdado de DbTransaction) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| Rollback() |
Reverte uma transação de um estado pendente. |
| Rollback(String) |
Reverte uma transação de um estado pendente e especifica o nome da transação ou do ponto de gravação. |
| Save(String) |
Cria um ponto de gravação na transação que pode ser usado para reverter uma parte da transação e especifica o nome do ponto de gravação. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDbTransaction.Connection |
Recebe o DbConnection objeto associado à transação, ou uma referência nula se a transação deixar de ser válida. (Herdado de DbTransaction) |