miércoles, 2 de marzo de 2011

[Visual Net] --> Ejecutar transacciones en base de datos

Cuando enviamos órdenes a una base de datos mediante el objeto Connection estas se ejecutan secuencialmente. Algunas veces cuando el usuario realiza alguna acción necesitamos grabar cambios en varias tablas, y nos debemos asegurar de que si se produce algún error los cambios se deshagan en todas las tablas. Para esto se usan las transacciones.

Durante una transacción se ejecutan varias órdenes a una base de datos (inserciones, modificaciones o eliminaciones) y cuando se realiza la ejecución de la transacción (Commit) se intentan ejecutar todas, si alguna da algún fallo no se ejecuta ninguna y se vuelve al estado inicial (Rollback).

En el siguiente código vemos un ejemplo de actualización de 2 tablas mediante una conexión ODBC:


Using bd as New System.Data.Odbc.OdbcConnection(cnn)
   Dim cmd as New Odbc.OdcCommand
   Dim transaction as Odbc.OdbcTransaction
   Try
    bd.Open
    transaction=bd.BeginTransaction   ' aquí comienza la transacción
    cmd.Connection=bd       ' asigno la conexión al comando
    cmd.Transaction=transaction           ' asigno la transacción al comando
    sql = "INSERT INTO tblUsers(nombre,apellidos) VALUES ('Pepe','Gonzalez')
    cmd.CommandText=sql          ' asigno la sentencia sql
    cmd.ExecuteNonQuery()
    ' ejecuto 2ª sentencia
    sql="INSERT INTO tblPassword(nombre,passw) VALUES ('Pepe','1234')
    cmd.CommandText=sql
    cmd.ExecuteNonQuery()

    ' ejecuto la transacción
    transaction.Commit()
  catch ex as Exception
   Try
      transaction.Rollback
   End Try
  End Try
End Using

No hay comentarios:

Publicar un comentario