Usuário com melhor resposta
try catch

Pergunta
-
Olá a todos,
Tenho um método que atualiza dados no banco de dados.
eu utilizo o try catch normalmente.
o problema é que, quando dá um erro na gravação eu quero dar um "rollback" para desfazer as alterações.
Como eu faço isso?
Grade abraço.
João Luiz
Respostas
-
Olá joão...
Try
Seu codigotrans.Commit()
Catch
If Not IsNothing(trans) Then
trans.Rollback()
End If
Finally
If SQLConnection1.State = ConnectionState.Open Then
SQLConnection1.Close()
End If
End Try
Att, Ednaldo Soares Garcia Programador .NET Sistemas Windows / WEB Acesse: www.ednaldosoares.com Frase: Honestidade, Humildade e Perseverança acima de tudo!!!- Sugerido como Resposta henri nusbaum segunda-feira, 1 de março de 2010 18:22
- Marcado como Resposta Harley Araujo quarta-feira, 3 de março de 2010 13:16
-
Quando que dá essa exception no modo debug?
Eu faria de outra maneira para não dar problema se ocorrer uma exception antes de criar a transação:
Conexao = new SqlConnection(StrConexao.ConnectionString); Conexao.Open(); Comando = new SqlCommand("UPDATE Laudos SET pressaoContratada = " + pressaocontratadastr + ", medidorNumeroSerie = '" + numeroserie.Text + "' WHERE IDLaudo = " + laudo.SelectedValue, Conexao); SqlCommand command = Conexao.CreateCommand(); SqlTransaction transaction; transaction = Conexao.BeginTransaction(); command.Connection = Conexao; command.Transaction = transaction; try { Comando.ExecuteNonQuery(); transaction.Commit(); } catch { if(transaction != null) transaction.Rollback(); } finally { Conexao.Close(); }
Henri Nusbaum - Itelios do Brasil Informática Ltda- Marcado como Resposta Harley Araujo quarta-feira, 3 de março de 2010 13:16
Todas as Respostas
-
Olá joão...
Try
Seu codigotrans.Commit()
Catch
If Not IsNothing(trans) Then
trans.Rollback()
End If
Finally
If SQLConnection1.State = ConnectionState.Open Then
SQLConnection1.Close()
End If
End Try
Att, Ednaldo Soares Garcia Programador .NET Sistemas Windows / WEB Acesse: www.ednaldosoares.com Frase: Honestidade, Humildade e Perseverança acima de tudo!!!- Sugerido como Resposta henri nusbaum segunda-feira, 1 de março de 2010 18:22
- Marcado como Resposta Harley Araujo quarta-feira, 3 de março de 2010 13:16
-
-
Olá,trans pelo que percebi é um objeto da class SqlCommand.Nele você têm a propriedade Transaction e o método RollBack() e diversos outros.SqlCommand cmd = new SqlCommand();cmd.Transaction.RollBack();Espero ter ajudado.
Felipe K. de Mello
Web Developer
Visite meu site: felipekm.com
MCP Web-Based Client Development -
Completando a resposta do Ednaldo:
use o método BeginTransaction do objeto connection. E depois precisa adicionar o SqlTransaction no SqlCommand
SqlCommand command = connection.CreateCommand(); SqlTransaction transaction; transaction = connection.BeginTransaction(); command.Connection = connection; command.Transaction = transaction;
Eu peguei o código daqui: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx
Henri Nusbaum - Itelios do Brasil Informática Ltda- Sugerido como Resposta Felipe K. de Mello segunda-feira, 1 de março de 2010 18:29
-
No modo debug diz que não existe instancia de objeto válido.
eu tenho que criar outro comando para fazer isso?
Conexao = new SqlConnection(StrConexao.ConnectionString); Conexao.Open(); Comando = new SqlCommand("UPDATE Laudos SET pressaoContratada = " + pressaocontratadastr + ", medidorNumeroSerie = '" + numeroserie.Text + "' WHERE IDLaudo = " + laudo.SelectedValue, Conexao); SqlCommand command = Conexao.CreateCommand(); SqlTransaction transaction; transaction = Conexao.BeginTransaction(); command.Connection = Conexao; command.Transaction = transaction; try { Comando.ExecuteNonQuery(); Comando.Transaction.Commit(); } catch { Comando.Transaction.Rollback(); } finally { Conexao.Close(); }
-
Quando que dá essa exception no modo debug?
Eu faria de outra maneira para não dar problema se ocorrer uma exception antes de criar a transação:
Conexao = new SqlConnection(StrConexao.ConnectionString); Conexao.Open(); Comando = new SqlCommand("UPDATE Laudos SET pressaoContratada = " + pressaocontratadastr + ", medidorNumeroSerie = '" + numeroserie.Text + "' WHERE IDLaudo = " + laudo.SelectedValue, Conexao); SqlCommand command = Conexao.CreateCommand(); SqlTransaction transaction; transaction = Conexao.BeginTransaction(); command.Connection = Conexao; command.Transaction = transaction; try { Comando.ExecuteNonQuery(); transaction.Commit(); } catch { if(transaction != null) transaction.Rollback(); } finally { Conexao.Close(); }
Henri Nusbaum - Itelios do Brasil Informática Ltda- Marcado como Resposta Harley Araujo quarta-feira, 3 de março de 2010 13:16