Hola amigos de tecnohackers, en este post he decidido ilustrar con una simple y pequeña aplicacion como gestionar infromacion de una base de datos en mysql realizando operaciones basicas como insert, update, select, delete para guardar, actualizar, buscar, y eliminar datos.
Para la realizacion de esta aplicacion haremos uso de visual basic.net 2008 express y mysql 5.0
Bien una vez tengamos todo listo es necesario agregar el conector de mysql con .net al proyecto (lo puedes descargar de: You are not allowed to view links.
Register or
Login), el conector se debe alojar en la carpeta debug del proyecto (ya se encuentra alli para este ejemplo) tal y como se ve en la siguiente imagen:
Bien, despues de esto, pasamos a registrar la libreria, para ello nos vamos al explorador de soluciones (ubicado en la parte derecha de la interfaz de vb.net), presionamos clic derecho sobre la carpeta references y seleccionamos la opcion agregar referencia del menu contextual que aparece, luego, en el cuadro nuevo que se genera te diriges a la pestaña examinar y entras a la carpeta debug del proyecto, luego seleccionas el archivo dll llamado: MySql.Data.dll y presionas el boton aceptar para que la referencia quede correctamente agregada, puedes constatar los pasos a traves de la siguiente imagen:
Posteriormente a este paso realizamos un diseño similar al que se ve en la siguiente imagen:
agregamos 5 botones, 5 textbox y 5 labels para especificar cada campo.
Bien hasta aqui nuestra aplicacion esta preparada para aceptar una conectividad con la base de datos, sin embargo aun no hemos creado dicha bd, para ello abrimos nuestro administrador de base de datos preferido, yo en mi caso opto por usar phpmyadmin del appserv para crear la base de datos, la cual se llamara prueba_validar_dato, tendra una tabla llamada usuarios y dicha tabla tendra los siguientes campos: id, cedula, nombre, apellidos, direccion, email. En la siguiente imagen puedes ver la estructura de la tabla:
puedes crear dicha tabla con el asistente, pero si desean hacerlo a codigo aqui tienen las sentencias sql:
CREATE TABLE `usuarios` (
`id` int(11) NOT NULL auto_increment,
`cedula` varchar(10) NOT NULL,
`nombre` varchar(60) NOT NULL,
`apellidos` varchar(50) NOT NULL,
`direccion` varchar(80) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)
Listo, ahora pasemos nuevamente a nuestro entorno de programacion vb.net y vamos a crear un nuevo modulo en el cual se van a establecer los parametros de conexion con la base de datos, alli se indica el nombre o ip del servidor que posee la base de datos, el usuario de mysql, la contraseña y el nombre de la base de datos, el codigo del modulo es el siguiente:
Imports MySql.Data.MySqlClient
Module Modulo_conexion
Public cadena As String
Public conexion As New MySqlConnection
Public sql As String
Public mycommand As New MySqlCommand
Public myAdapter As New MySqlDataAdapter
Public Sub conectarme()
'realizo la conexion'
Try
'localhost
cadena = "server='localhost'; user id=root; pwd=12345; database=prueba_validar_dato"
conexion.ConnectionString = cadena
conexion.Open()
MsgBox("conexion establecida!!!")
Catch ex As Exception
MsgBox("No es Posible Establecer Conexion con la Base de Datos Debido a Problemas de Configuracion, Verifique los Parametros de Conexion Por Favor!", MsgBoxStyle.Critical, "Advertencia")
End Try
End Sub
End Module
A continuacion, nos dirigimos a nuestro formulario, hacemos el llamado a la libreria de mysql importandola
Imports MySql.Data.MySqlClient
y declaramos una variable como global:
Dim encontro As Integer
Luego, pasamos al evento load del formulario para hacer el llamado a la funcion conectarme:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
conectarme()
encontro = 0
End Sub
Muy bien, de esa manera siempre que ejecutemos nuestra aplicacion se intentara conectar con la base de datos; ahora creamos algunas funciones para gestionar los datos y el formulario.
vamos a crear a la funcion limpiar_cajas_de_texto() que se encargara de colocar en blanco cada uno de los text del formulario al presionar el boton nuevo.
Sub limpiar_cajas_de_texto()
Me.TextBox_cedula.Clear()
Me.TextBox_nombre.Clear()
Me.TextBox_apellido.Clear()
Me.TextBox_direccion.Clear()
Me.TextBox_email.Clear()
End Sub
llamamos a dicha funcion o subrutina en el boton nuevo:
Private Sub Button_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_nuevo.Click
limpiar_cajas_de_texto()
End Sub
Ahora vamos a programar en el boton buscar, a traves del cual encontraremos usuarios registrados en la base de datos mediante la cedula, en esta funcion vamos a utilizar una variable indicadora llamada encontro para saber si la busqueda tuvo exito o no, si hay coincidencia, la variable encontro pasara al estado 1 y si no hay coincidencia permanecera en 0, aqui esta el codigo a utilizar:
Private Sub Button_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_buscar.Click
encontro = 0
Dim nombre, apellido, direccion, email As String
nombre = ""
apellido = ""
direccion = ""
email = ""
If conexion.State = ConnectionState.Closed Then
conexion.Open()
End If
mycommand = New MySqlCommand("select *from usuarios where cedula='" & Me.TextBox_cedula.Text & "'", conexion)
mycommand.Connection = conexion
Dim drcampo As MySqlDataReader
drcampo = mycommand.ExecuteReader()
Try
Do While drcampo.Read
encontro = 1
nombre = drcampo.GetString(2)
apellido = drcampo.GetString(3)
direccion = drcampo.GetString(4)
email = drcampo.GetString(5)
Loop
Catch ex As Exception
MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error")
End Try
conexion.Close()
If (encontro = 1) Then
Me.TextBox_nombre.Text = nombre
Me.TextBox_apellido.Text = apellido
Me.TextBox_direccion.Text = direccion
Me.TextBox_email.Text = email
MsgBox("Usuario encontrado!", MsgBoxStyle.Information, "Notificacion")
Else
MsgBox("el usuario que usted esta buscando no se encuentra en la base de datos, verifique!", MsgBoxStyle.Exclamation, "Notificacion")
End If
End Sub
muy bien amigos ahora vamos a codificar el boton guardar, alli vamos a validar que la cedula del usuario no se repita, es decir que no aparezca mas de 1 vez en la base de datos, para ello vamos a crear una subrutina llamada validar asi:
Sub validar()
encontro = 0
If conexion.State = ConnectionState.Closed Then
conexion.Open()
End If
mycommand = New MySqlCommand("select *from usuarios where cedula='" & Me.TextBox_cedula.Text & "'", conexion)
mycommand.Connection = conexion
Dim drcampo As MySqlDataReader
drcampo = mycommand.ExecuteReader()
Try
Do While drcampo.Read
encontro = 1
Loop
Catch ex As Exception
MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error")
End Try
conexion.Close()
If (encontro = 1) Then
MsgBox("no se puede Guardar, ya hay un registro con la misma cedula!", MsgBoxStyle.Exclamation, "Notificacion")
Else
guardar()
End If
End Sub
en caso tal de que el usuario no este registrado en la base de datos procedemos a guardarlo haciendo el llamado a la funcion o procedimiento guardar:
Sub guardar()
If conexion.State() = ConnectionState.Closed Then
conexion.Open()
End If
sql = "SELECT * FROM usuarios"
mycommand.Connection = conexion
mycommand.CommandText = sql
'---------------------------------------------------------------------------------------------------------------------------
'procedo a pasar los datos de los textbox a la variable para guardar
mycommand.Parameters.Clear()
mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text)
mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text)
mycommand.Parameters.AddWithValue("?apellido", Me.TextBox_apellido.Text)
mycommand.Parameters.AddWithValue("?dire", Me.TextBox_direccion.Text)
mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text)
mycommand.CommandText = "insert into usuarios values(NULL,?ced,?nombre,?apellido,?dire,?email)"
Try
mycommand.ExecuteNonQuery()
MsgBox("Los datos se han guardado Correctamente! ", MsgBoxStyle.Information, "Notificacion")
Catch ex As Exception
MsgBox("No es posible Guardar, Verifique! " & ex.Message, MsgBoxStyle.Critical, "Error")
End Try
conexion.Close()
End Sub
de esta manera en nuestro boton guardar solo debemos invocar al procedimiento validad de la siguiente manera:
Private Sub Button_guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_guardar.Click
validar()
End Sub
Pasemos ahora al modificar, este proceso es muy sencillo, aqui solamente debemos consultar los datos del usuario a traves de la cedula (en primer lugar), luego en los datos que son visualizados en los text, modificar los que desees excepto la cedula y presionar dicho boton, las sentencias e instrucciones de vb.net a utilizar son:
Private Sub Button_modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_modificar.Click
If conexion.State() = ConnectionState.Closed Then
conexion.Open()
End If
sql = "SELECT * FROM usuarios"
mycommand.Connection = conexion
mycommand.CommandText = sql
Try
mycommand.Parameters.Clear()
mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text)
mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text)
mycommand.Parameters.AddWithValue("?ape", Me.TextBox_apellido.Text)
mycommand.Parameters.AddWithValue("?direccion", Me.TextBox_direccion.Text)
mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text)
'si actualizo
mycommand.CommandText = "Update usuarios set nombre=?nombre,apellidos=?ape,direccion=?direccion,email=?email WHERE cedula=?ced"
mycommand.ExecuteNonQuery()
MsgBox("Los datos del usuario han sido actualizados con exito!...", MsgBoxStyle.Information, "Notificacion")
Refresh()
Catch ex As Exception
MsgBox("No es posible Actualizar, Verifique! " & ex.Message)
End Try
conexion.Close()
End Sub
Por ultimo, pasamos al boton eliminar, alli nos cersioramos que se haya digitado alguna cedula que realmente aparezca en la base de datos, de ser asi procedemos a borrarlo de forma permanente de la base de datos:
Private Sub Button_eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_eliminar.Click
If (Me.TextBox_cedula.Text.Trim = "") Then
MsgBox("Primero Busque al usuario que desea eliminar escribiendo su cedula y presionando el boton buscar!", MsgBoxStyle.Exclamation, "Notificacion")
Else
'realizo la eliminacion
If conexion.State() = ConnectionState.Closed Then
conexion.Open()
End If
mycommand.Parameters.Clear()
mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text)
sql = "delete FROM usuarios where cedula=?ced"
mycommand.Connection = conexion
mycommand.CommandText = sql
Try
mycommand.ExecuteNonQuery()
MsgBox("Usuario eliminado con exito de la base de datos!", MsgBoxStyle.Information, "Notificacion")
Refresh()
limpiar_cajas_de_texto()
Catch ex As Exception
MsgBox("Imposible Eliminar porque...:" & ex.Message)
End Try
'Por Ultimo Cierro La conexion
conexion.Close()
End If
End Sub
Podemos poner en marcha la aplicacion y ver que tal funciona:
*inicialmente si los parametros de conexion a la bd son correctos veremos un mensaje como el de la imagen siguiente:
*posteriormente si lo deseamos podemos ejecutar cualquier opcion, he deseado hacer una consulta asi que ingrese la cedula 123 y presione el boton buscar, miren el resultado:
*Luego registramos un usuario, ingresamos los datos y presionamos el boton guardar y veremos el siguiente mensaje de confirmacion:
Bueno, se le pueden hacer todas las pruebas que deseen, el programa solo realiza las operaciones de gestion basicas le hacen falta muchas validaciones para establecer algunas normas de integridad en la base de datos, espero y les pueda resultar de guia y orientacion a aquellos que esten interesados en aprender a trabajar con bases de datos.
si desean descargar la aplicacion aqui les dejo el link: You are not allowed to view links.
Register or
Login