Visual Basic .NET - Realizar una transacción

Written by lopezatienza on 17 Mayo 2010 – 11:18 -

Hola a todos.

En este artículo voy a explicar cómo realizar una transacción desde Visual Basic .NET.

Esto es muy importante para poder dejar la base de datos en el estado original antes de realizar cualquier modificación, si ocurre algún error al ejecutar algunas sentencias DML, o por algún fallo del código de programación.

Hay que tener en cuenta que esto es necesario al realizar más de una sentencia DML, ya que las sentencias de inserción, modificación y borrado ya son Transacciones, y no tendría sentido introducir esta sentencia dentro de una Transacción.

El ejemplo que pongo es para acceder a SQL Server, (para otras bases de datos revisar los diferentes namespaces disponibles), por lo que debemos importar los namespaces:

Imports System.Data

Imports System.Data.SqlClient

La función a llamar sería la siguiente:

Public Function EjecutarTransaccion() As Boolean

        Dim retVal As Boolean = False

        Dim conexion As SqlConnection = Nothing

        Dim comando As New SqlCommand

        Dim comando2 As New SqlCommand

        Dim transaccion As SqlTransaction = Nothing

 

        Try

            conexion = New SqlConnection("NuestroConnectionString")

            conexion.Open()

            transaccion = conexion.BeginTransaction()

 

            comando.Connection = conexion

            comando.Transaction = transaccion

            comando.CommandType = CommandType.Text

            comando.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1"

            comando.ExecuteNonQuery()

            comando2.Connection = conexion

            comando2.Transaction = transaccion

            comando2.CommandType = CommandType.Text

            comando2.CommandText = "UPDATE Region SET RegionID = 2, RegionDescription = 'East' WHERE RegionID = 2"

            comando2.ExecuteNonQuery()

 

            transaccion.Commit()

            transaccion = Nothing

            conexion.Close()

            conexion = Nothing

 

            retVal = True

        Catch ex As Exception

            If (Not IsNothing(transaccion)) Then

                transaccion.Rollback()

                transaccion = Nothing

            End If

 

            If (Not IsNothing(conexion)) Then

                conexion.Close()

                conexion = Nothing

            End If

            retVal = False

        End Try

        Return retVal

End Function

Un saludo y espero os sirva de ayuda.


Tags:
Posted in Visual Basic .NET |

Leave a Comment

RSS