por Cesar Cassiano Schimanco

Como usar SqlTransaction, Commit e Rollback C# / ASP.NET

Importante usar SqlTransaction em uma seqüencia de transações, onde uma depende da outra.
Ou seja, várias tabelas com dados vinculados e se ocorrer algum erro durante a execução da transação, a transação pode ser revertida. Evitando algum problema decorrente de uma transação parcial, e talvez uma grande dor de cabeça.

Exemplo de SqlTransaction com try/catch e Commit/Rollback.

using (SqlConnection Conn = new SqlConnection(sConnectionString))
{
	Conn.Open();
	//Iniciando uma transação
	SqlTransaction trans = Conn.BeginTransaction("myTransaction");
	try
	{
		//SqlCommand(string SQL, conexão, e transação);
		string sSQL = "DELETE FROM tblUsuario WHERE userID = @id";
		SqlCommand cmd = new SqlCommand(sSQL, Conn, trans);
		cmd.Parameters.AddWithValue("@id", 1);
		cmd.ExecuteNonQuery();

		//Mantenho o mesmo CommandText, apenas altero o valor do Parameter @id
		cmd.Parameters["@id"].Value = 2;
		cmd.ExecuteNonQuery();
		
		//Confirmando a transação.
		trans.Commit();
		Response.Write("Dados apagados");
	}
	catch (Exception ex)
	{
		//Reverte a transação (Rollback) se acontecer algum erro na transação
		trans.Rollback("myTransaction");
		Response.Write("Rollback, erro:" + ex.Message);
	}
	Conn.Close();
}

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...