Jump to content


Photo

Trabalhando Com Transação Sqlclient


  • Faça o login para participar
7 replies to this topic

#1 MACUL

MACUL

    Doutor

  • Usuários
  • 770 posts
  • Sexo:Masculino
  • Localidade:SP

Posted 28/05/2007, 16:44

Executando transações do SQL com ADO.NET
Por Patton Tony, Builder.com

Patton Tony começou sua carreira profissional como um colaborador de aplicação que ganha Java, VB, Lotus, e certificações de XML para bolster seu conhecimento.


ADO.NET fornece tudo que você necessita trabalhar com dados back-end, que podem ser tão simples quanto ler dados de uma tabela. Uma transação permite que você agrupe operações da base de dados para assegurar-se de que todas as operações sejam executadas porque, se uma operação falhar, a transação inteira falha. Vamos utilizar transações dentro da estrutura de .NET.

Vista geral da transação

Uma transação é um grupo de operações combinadas em uma unidade lógica do trabalho. Desenvolvedore utilizam as transações para manter o controle e a consistência obtendo a integridade de cada ação em uma transação, apesar dos erros que podem ocorrer no sistema.

Todas as operações na transação são executadas, ou nenhuma.

A operação bancária é o exemplo padrão. Uma transação abrangeria transferência do dinheiro de um cliente a outro. Transferência é uma transação porque o débito do dinheiro de uns cliente e crédito a outro deve ser executado como uma unidade--uma porção não pode falhar.

Transações do SQL
O SQL permite que um colaborador trabalhe com transações usando duas indicações simples:

Begin Transaction

Commit Transaction

Tudo que está entre estas duas indicações compõe a transação. O comando de começo transação [Begin Transaction], assim cada comando que segue não executa até emitir o comando de dim de transação [Commit Transaction]. No ADO.NET é igualmente simples.


Transações de ADO.NET
Uma transação requer uma conexão da base de dados e um objeto de transação. Utilizar transações do SQL e ADO.NET é com a classe de SqlTransaction. Este nome da classe varia depender em cima da plataforma da base de dados utilizada. Por exemplo, a classe da transação para bases de dados de OLEDB é OleDbTransaction.


O namespace de System.Data.SqlClient contem a classe de SqlTransaction. Há duas propriedades na classe:
Connection: Indica o objeto de SqlConnection associado com a transação.
IsolationLevel: Especifica IsolationLevel da transação.

A propriedade de IsolationLevel é um objeto da enumeração com os seguintes membros:

Caos: As mudanças pendentes das transações altamente isoladas não podem sobrescrever.

ReadCommitted: Apenas dados com transação finalizada são lidos para evitar uma "leitura suja", mas os dados podem ser mudados antes do fim da transação.

ReadUncommitted: Um "dado sujo" [é possível ler], significando que nenhum fechamento compartilhado está emitido e nenhum fechamento exclusivo está honrado.

RepeatableRead: Os fechamentos são colocados em todos os dados que são usados em uma pergunta, impedindo que outros usuários atualizem os dados. Isto impede nonrepeatable, embora as fileiras phantom ainda são possíveis.

Serialisable: Um fechamento da escala está colocado na série de dados, impedindo que outros usuários atualizem ou introduzam fileiras na série de dados até que a transação esteja completa.

O IsolationLevel permite um nível de travar registro, mas este conceito é além do espaço deste artigo. O objeto de SqlTransaction fornece métodos também. Você pode usar os seguintes métodos trabalhar com a transação:



Commit: A transação do banco é finalizada.

Rollback: Retorna a transação.

Save: Cria um savepoint e a transação pode retornar até esse local especificando esse nome.



The following C# example puts all the pieces together:
using System;
using System.Data;
using System.Data.SqlClient;
namespace BuilderExamples {
class BuilderTransactionExample {
static void Main(string[] args) {
SqlTransaction trans = null;
SqlConnection conn = null;
SqlCommand comm = null;
try {
conn = new SqlConnection("server=(local);Initial
Catalog=Northwind;UID=ctester;PWD=password");
conn.Open();
comm = conn.CreateCommand();
trans = conn.BeginTransaction
("BuilderTransaction");
comm.Connection = conn;
comm.Transaction = trans;
comm.CommandText = "Insert into Territories
(TerritoryID, TerritoryDescription,
RegionID) VALUES (99001, 'Louisville', 4)";
comm.ExecuteNonQuery();
comm.CommandText = "Insert into Territories
(TerritoryID, TerritoryDescription,
RegionID) VALUES (99002, 'Lexington', 4)";
comm.ExecuteNonQuery();
trans.Commit();
} catch(Exception e) {
try {
if (trans != null) {
trans.Rollback("BuilderTransaction");
} } catch (SqlException ex) {
if (trans.Connection != null) {
Console.WriteLine("Exception" + ex.GetType() + "
encountered while rolling back transaction.");

} } Console.WriteLine("Exception " + e.GetType() + " encountered while inserting
data.");
} finally {
if (conn != null) {
conn.Close();
} } } } }

sta aplicação simples e tenta incluir dois registros em uma tabela na base de dados de Northwind seguindo estas etapas:

1. Chamar o método de BeginTransaction do objeto da conexão para marcar o começo da transação. O método de BeginTransaction retorna uma referência à transação. Esta referência é atribuída aos objetos do comando que são alistados na transação.

2. Atribuir o objeto da transação à propriedade da transação do comando ser executado. Se um comando estiver executado em uma conexão com uma transação ativa, e o objeto da transação não estiver atribuído à propriedade da transação do comando, uma exceção está jogada.

3. Executar os comandos requeridos.

4. Chamar o método cometer do objeto da transação para terminar a transação, ou chamar o método do Rollback para cancelar a transação.

VB.NET
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim trans As SqlTransaction
Dim conn As SqlConnection
Dim comm As SqlCommand
Try
conn = New SqlConnection("server=(local);Initial
Catalog=Northwind;UID=ctester;PWD=password")
conn.Open()
comm = conn.CreateCommand()
trans = conn.BeginTransaction
("BuilderTransaction")
comm.Connection = conn
comm.Transaction = trans
comm.CommandText = "Insert into Territories 
(TerritoryID, TerritoryDescription,
RegionID) VALUES (99003, 'Louisville', 4)"
comm.ExecuteNonQuery()
comm.CommandText = "Insert into Territories 
(TerritoryID, TerritoryDescription,
RegionID) VALUES (99004, 'Lexington', 4)"
comm.ExecuteNonQuery()
trans.Commit()
Catch e As Exception
Try
If Not (trans Is Nothing) Then
trans.Rollback("BuilderTransaction")
End If
Catch ex As SqlException
Console.WriteLine("Exception" + ex.GetType
().ToString() + " encountered while rolling back
transaction.")
End Try
Console.WriteLine("Exception " + e.GetType
().ToString() + " encountered while inserting 
data.")
Finally
If Not (conn Is Nothing) Then
conn.Close()
End If
End Try
End Sub
End Module

Transação completa
Embora este é um exemplo simples, demonstra como fácil é utilizar transações em sua aplicação de .NET. Utilizar, transações é necessário quando os comandos agrupados são relacionados



Original em :
http://www.builderau...39130225,00.htm


Informações adcionais

Execute requires the command to have a transaction object when the
connection assigned to the command is in a pending local transaction
the transaction property of the command has not been initialilzed

Esse erro ocorre quando o comando
comm.Transaction = trans
está faltando.
*************** M ** A ** C ** U ** L ***************

*************************************************

#2 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 05/11/2017, 08:47

Acheter Viagra Pfizer 100mg Adult Dosage Amoxicillin levitra reimport Alternative Al Viagra Priligy Funziona 2012
Comment Avoir Du Viagra En France Vigra Online online pharmacy Cialis Senza Ricetta In Farmacia where can i buy isotretinoin skin health low price mastercard Pflanzliches Viagra Horn

#3 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 06/11/2017, 14:12

Best Propecia Price Cialis Sale Buy Xenical Online Us Pharmacy cialis Is Zithromax A Steroid Xl Pharmacy India Vente Viagra Online
Rivenditori Levitra Levitra In Svizzera Cialis Professional Review viagra online prescription The Blue Pill On Line Levitra Canada Price
Cheap Levitra Online Z Propecia E Infertilidad Farmacia viagra Cialas In Canada

#4 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 07/11/2017, 14:03

Viagra Professional viagra How To Get Priligy Priligy Se Necesita Receta Levofloxacin Cats
Buy Amoxicillin Without Prescription Como Tomar El Viagra Viagra 0.25 Mg cialis Buy Dapoxetine
Misoprostol 200 Mcg Tablet viagra Bentyl Formulex Canada Website Next Day Without Perscription Il Cialis Commenti
Levitra Packstation Cialis Quante Ore Prima viagra Cheap Tamoxifen Uk Safe Cialis Online
Cheap Female Viagra Cod generic isotretinoin direct discount amex accepted buy viagra online Cialis Comprare Farmacia
Isotretinoin 20mg acne in internet with doctor consult viagra prescription Worldwide Real Acticin 30gm From Canada

#5 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 07/11/2017, 20:19

Discount Online Clobetasol Clobetasol Propionate Need Website generic cialis Acheter Cialis Generique Canada Viagra Espanol Keflex Pregnant
Buy Isotretinoin Acnetrex Cialis Professional Pay By Paypal Cytotec Pour Methergin online pharmacy Female Cialis 20mg Viagra Tobuy Now In United States Canada.Rx.Connection
Secure Ordering Stendra Where To Buy Cheapeast cialis Cialis Definition Viagra Generika Erfahrungen Apotheke

#6 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 17/11/2017, 11:09

Cialas Prix Cialis Et Viagra Cephalexin Dose In Dog buy levitra 10 mg Alli 60mg
Clomid Coiffure D Action Zithromax Mexico viagra Cialis Original 20 Mg Kamagra Laboratorio Chile
Vipps Approved Canadian Pharmacies Farmaci Levitra viagra Propecia Eficacia
Dutasteride Order Now Store viagra Definicionpatente De Propecia
Womens Tadalis Sx Soft Amoxicillin And Neurontin Ineractions Generic Viagra Sold In Canada levitra brand online How Long Does Amoxicillin Rash Stay Tiger King

#7 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 24/11/2017, 00:13

Compra De Viagra En Madrid Propecia O Viagra cialis buy online Tretinac Kaufen
Acheter Du Viagra En France Cialis Kje Dobiti Northwestpharmacy Com viagra Zithromax Sinusitis Dosage Propecia Cost Buy Amoxil Duo
Levitra Aus Holland Cytotec Contre Indications Viagra Online Ausland closest thing to levitra Amoxicillin For Dogs Side Effects

#8 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 28/11/2017, 04:27

Cialis Quante Volte Order Macrobid 100mg Windsor Cyalis Livraison Rapide levitra online overnight delivery Generique Amoxicillin Distribuer Ces Cialis Prezzo 5 Mg
Viagra Cialis Generika Forum Viagra Cialis Controindicazioni Cialis Dosi viagra prescription Propecia Bewertung Precio Priligy 30 Mg Tadalafil Generique France
Provera Purchase Cash Delivery Cheapeast Visa Accepted Propecia Free Trial Offer viagra online pharmacy Livepharmacy247 discount isotretinoin in usa drugs with free shipping Fake Generic Viagra




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq