Está en la página 1de 11

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

INTRODUCCIN:

La presente prctica presenta los pasos que seguimos para crear transacciones desde un lenguaje de programacin que en este caso es Visual Basic 2010 Express Edition y ejecutar sus instrucciones en un SGBD (en SQL SERVER 2008 R2).

Una transaccin en un Sistema de Gestin de Bases de Datos (SGBD), es un conjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atmica.

El objetivo de esta prctica es aplicar los conocimientos adquiridos en la UNIDAD 4, la cual se refiere al uso de transacciones.

Esta prctica consiste en

mostrar una interfaz grfica, la cual simula el uso de

transacciones en un banco, la interfaz tiene los siguientes componentes: Un textbox en la cual el usuario introduce su nmero de cuenta (de la que se va a transferir cierta cantidad a otra cuenta). Tiene tambin otro textbox en el que se tiene que introducir la cantidad que se desea transferir. Un tercer textbox en el cual se introduce el nmero de cuenta a la que se desea transferir la cantidad previamente asignada. Un botn TRANSFERIR, que es el encargado de ejecutar la transaccin. Tambin tiene un botn VER CUENTAS, el cual muestra la tabla de clientes (idcliente, nombre, saldo, RFC). Tiene un formulario que tiene un botn encargado de realizar la conexin a la base de datos.

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

DESARROLLO: 1. Instale el software Microsoft SQL Server 2008 R2 y Visual Basic .NET en un equipo informtico, considerando los requerimientos de hardware y software para su instalacin. 2. Cree el siguiente esquema en una base de datos llamada Banco: Cliente (IdCliente, Nombre, RFC) Cuenta (IdCuenta, Saldo) Cuentahabiente (IdCliente, IdCuenta)

CREATE DATABASE BANCO USE BANCO CREATE TABLE CLIENTE(IDCLIENTE INT PRIMARY KEY, NOMBRE VARCHAR(50), RFC INT) CREATE TABLE CUENTA(IDCUENTA INT PRIMARY KEY, SALDO FLOAT) CREATE TABLE CUANTAHABIENTE(IDCLIENTE INT, IDCUENTA INT)

3. Ingrese al menos 5 registros en cada una de las tablas.

INSERT INTO CUANTAHABIENTE VALUES (1,1) INSERT INTO CUANTAHABIENTE VALUES (2,2) INSERT INTO CUANTAHABIENTE VALUES (3,3) INSERT INTO CUANTAHABIENTE VALUES (4,4) INSERT INTO CUANTAHABIENTE VALUES (5,5) INSERT INTO CLIENTE VALUES(1,'LUCIO', 1) 4

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

INSERT INTO CLIENTE VALUES (2,'NOEL',2) INSERT INTO CLIENTE VALUES (3,'FRANCISCO',3) INSERT INTO CLIENTE VALUES (4,'RUBEN',4) INSERT INTO CLIENTE VALUES (5,'BANDA',5)

INSERT INTO CUENTA VALUES(1,1200.50) INSERT INTO CUENTA VALUES(2,1200.50) INSERT INTO CUENTA VALUES(3,1200.50) INSERT INTO CUENTA VALUES(4,1200.50) INSERT INTO CUENTA VALUES(5,1200.50) SELECT * FROM CLIENTE SELECT * FROM CUENTA

4. Cree una aplicacin en Visual Basic, que le permita acceder a la Base de datos Banco.

5. Agregue un formulario que le permita transferir x cantidad de dinero de una cuenta A a una cuenta B. Utilice transacciones (Ver documento Uso de Transacciones en VB).

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

6. Agregue un tercer formulario que le permita mostrar los saldos de las cuentas de cada cliente. (A continuacin se muestra las pantallas que confirman que realizamos los pasos anteriores).

El formulario 3 es el encargado de conectar el programa a la base de datos:

Al dar click en el botn nos muestra el siguiente mensaje

A continuacin entramos al formulario 2 el cual nos muestra la interfaz de usuario para el uso de transacciones, all damos click en ver cuentas, para verificar cuantos usuarios tenemos y cuanto dinero tienen en sus cuentas:

Este formulario permite mostrar los saldos de las cuentas de cada cliente.

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

En seguida introducimos el nmero de cuenta (en este caso 1), la cantidad a transferir (100), y la cuenta a la cual vamos a hacer la transaccin (2).

Damos click en el botn Transferir

Para corroborar que la transaccin si fue exitosa, volvemos al formulario 2 y damos click en VER CUENTAS:

Anteriormente tena 1600.5

Anteriormente tena 800.5

Podemos observar que efectivamente si fue exitosa la transaccin.

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

7. Realice un informe donde incluya los pasos efectuados y resultados obtenidos. 7.1. Qu inconvenientes se presentaron durante el desarrollo de la prctica? Cmo los resolvi? Explique. Tuvimos inconvenientes, con los cdigos pero los resolvimos consultando en internet y preguntndole al profesor, otro de los inconvenientes fu que la base de datos estaba trabajando en master y las transacciones se ejecutaban en la base de datos master y no en la base de datos llamada banco, as que cambi la configuracin, de esta manera pudimos solucionar el problema.

Error

Para que esta prctica resultara exitosa tuvimos que programar los siguientes cdigos en VISUAL BASIC EXPRESS EDITION 2010: DEL FORMULARIO 2 (QUE ES LA INTERFAZ DE USUARIO): Public Class Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Apertura de la conexin Dim Conexion As New SqlConnection("Data Source = LUCIO-PC\LUCIO;" & _ 8

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

"Initial Catalog = BANCO; Integrated Security = true") Dim cuenta1 As Integer = TextBox1.Text Dim cuenta2 As Integer = TextBox3.Text Dim cantidad As Single = TextBox2.Text Conexion.Open()

Dim Commando As New SqlCommand Dim Transaccion As SqlTransaction ' Inicio de la transaccion Transaccion = Conexion.BeginTransaction() Commando.Connection = Conexion Commando.Transaction = Transaccion Try ' Comando para descontar $100 de la Cuenta A 'modifique las variables, en principio puse que las tomara directamente es decir use TextBox1.text 'y lo cambi ya que record que en una prctica si lo tomamos directamente del textbox da espacios en blanco as que cre 'las variables cuenta1, cuenta2 de tipo entero y cantidad de tipo float Commando.CommandText = ("Update CUENTA Set SALDO = SALDO - " & cantidad & " Where IDCUENTA = " & cuenta1) Commando.ExecuteNonQuery() ' Comando para aumentar $100 de la Cuenta B ' Inicio de la transaccin

'el cdigo del ejemplo estaba mal pues despus de update tenia la palabra into y no se debia usar. Commando.CommandText = ("Update CUENTA Set SALDO = SALDO + " & cantidad & "Where IDCUENTA = " & cuenta2) Commando.ExecuteNonQuery() ' Finalizacin exitosa de la transaccin Transaccion.Commit() Console.WriteLine("El Dinero fue transferido con xito") MsgBox("El dinero fue transferido con exito") TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" 9

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

Catch eR As Exception ' Cancela toda la transaccin Transaccion.Rollback() Console.WriteLine(("Se produjo un error al procesar la transferencia" + vbNewLine + "Detalle:" + vbNewLine + e.ToString())) MsgBox("Se produjo un error al procesar la transferencia" + vbNewLine + "Detalle:" + vbNewLine + e.ToString()) Finally Conexion.Close() End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Form1.Show() End Sub End Class FORMULARIO 3 (SE ENCARGA DE LA CONEXIN DE LA BASE DE DATOS): Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Public Class Form3 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Conexion As New SqlConnection("Data Source = LUCIO-PC\LUCIO;" & _ "Initial Catalog = Ferreteria; Integrated Security = true") 'Inicio del cdigo para conectarse a SQL SERVER Try Conexion.Open() If Conexion.State = ConnectionState.Open Then MsgBox("Equipo: " & Conexion.WorkstationId & " conectado a la Base de Datos " & Conexion.Database & " en el Servidor " & Conexion.DataSource) End If Catch errores As Exception 10

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

MsgBox("Error al Abrir la Base de datos debido a " & vbCrLf & errores.Message) End Try End Sub End Class

FORMULARIO 1 (ES EL QUE SE ENCARGA DE RECIBIR LOS DATOS DE LA CONSULTA UBICADA EN EL CDIGO DEL BOTN VER CUENTAS) 'importacin de las clases Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cnn As New SqlConnection("Data Source = LUCIO-PC\LUCIO;" & _ "Initial Catalog = BANCO; Integrated Security = true") 'conecta la aplicacin a la base de datos cnn.Open() 'se abre la conexin 'ejecuta el comando en SQL, en la tabla de la base de datos Dim da As New SqlDataAdapter("SELECT CUENTA.IDCUENTA,CLIENTE.NOMBRE,CUENTA.SALDO,CLIENTE.RFC FROM CLIENTE, CUENTA,CUANTAHABIENTE WHERE CUENTA.IDCUENTA = CUANTAHABIENTE.IDCUENTA AND CUANTAHABIENTE.IDCLIENTE = CLIENTE.IDCLIENTE ", cnn) Dim ds As New DataSet da.Fill(ds) 'se despliega la tabla en el DataGridView DataGridView1.DataSource = ds.Tables(0) End Sub End Class

(El cdigo de la base de datos se encuentra en las pginas 5 y 6)

11

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

CONCLUSIONES:

En esta prctica combinamos los conocimientos adquiridos en materias pasadas y tambin en este curso de Base de datos Distribuidas, as que no se nos dificult mucho su realizacin, en lo que tuvimos ms errores fue en las instrucciones de Visual Basic que realizan las consultas de modificacin en la tabla de la base de datos, pero lo solucionamos viendo algunos ejemplos realizados en clase y algunas otras cosas las consultamos en internet, trabajar en equipo nos ayud mucho porque complementamos nuestras ideas y resolvimos nuestras dudas ayudndonos a unos a otros y aprovechando las capacidades que tiene cada uno.

Opinamos que esta prctica es muy importante, ya que nos permiti aplicar nuestros conocimientos tanto tericos cmo prcticos del tema de transacciones, as como tambin del lenguaje Visual Basic, y la creacin de tablas en SQL SERVER.

Hoy en da los sistemas transaccionales son muy utilizados, as que consideramos que la realizacin de esta prctica es un buen comienzo que nos ayudar a realizar sistemas transaccionales ms grandes.

12

PRCTICA 5: USO DE TRANSACCIONES DESDE UN LENGUAJE HUSPED A UN SGBD

BIBLIOGRAFA Y/O REFERENCIAS:

http://msdn.microsoft.com/es-es/library/ms178037.aspx http://www.connectionstrings.com/sql-server-2008 http://www.recursosvisualbasic.com.ar/htm/recursos-externos/

13