la mejor forma de Conectar c# con mysql con archivos de configuracion

65
CONEXION DE VISUAL C#.NET 2008 Y MYSQL WORKBENCH 6.1, A TRAVES DE CLASES Y ARCHIVOS DE CONFIGURACION(APPCONFIG) PARA REALIZAR OPERACIONES DE INSERCION,MODIFICACION, ELIMINACION Y BUSQUEDA JUAN DAVID REDONDO ROBLES ESTUDIANTE VII SEMESTRES ING DE SISTEMAS UNIVERSIDAD DE LA GUAJIRA COLOMBIA RIOHACHA LA GUAJIRA

Transcript of la mejor forma de Conectar c# con mysql con archivos de configuracion

Page 1: la mejor forma de Conectar c# con mysql con archivos de configuracion

CONEXION DE VISUAL C#.NET 2008 Y MYSQL WORKBENCH 6.1, A TRAVES DE CLASES Y ARCHIVOS DE CONFIGURACION(APPCONFIG) PARA REALIZAR OPERACIONES DE INSERCION,MODIFICACION,

ELIMINACION Y BUSQUEDA

JUAN DAVID REDONDO ROBLES

ESTUDIANTE VII SEMESTRES ING DE SISTEMAS

UNIVERSIDAD DE LA GUAJIRA

COLOMBIA

RIOHACHA LA GUAJIRA

2015

Page 2: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 3: la mejor forma de Conectar c# con mysql con archivos de configuracion

INTRODUCCION

A través de este escrito se pretende compartir conocimientos a través de la explicación de código para conectar VISUAL C#.NET 2008 Y MYSQL WORKBENCH 6.1, a través de archivos de configuración (APPCONFIG), para luego realizar operaciones de inserción, modificación, eliminación y búsqueda desde un formulario. Esto se hará con la utilización de algunos principios de la programación orientada a objetos (clases y objetos respectivamente), a lo largo del documento se mostrara a través de capturas de pantalla con cada uno de los pasos a realizar.

Actualmente existen nuevas versiones de visual estudio tal como lo es la versión 2010,2012 y 2013, sin embargo, el código a proporcionar es aplicable a cualquiera de ellas sin tener ningún problema.

Que se necesita:

Visual studio.net en cualquiera de sus versiones (yo trabajaré con la versión 2008) Motor de bases de datos MySQL Workbench 6.1 o cualquier versión.

Procedimientos a realizar:

1. Crear una base de datos sencilla(1 tabla y cuatro campos y cinco registros)2. Crear un procedimiento almacenado para insertar,editar ,eliminar y buscar3. Agregar en Visual Studio el archivo de configuración appconfig y modificarlo.4. Crear clases en visual c# .net para insertar, eliminar, y buscar.5. Mostrar a través de un datagridview, todos los registos que están en la base de datos.

Nota: Utiliza los mismos nombres que están en el ejemplo así no tendrás problemas, partiendo del hecho de que todo está relacionado.

Page 4: la mejor forma de Conectar c# con mysql con archivos de configuracion

CREACION DE LA BASE DE DATOS

Paso 1: Abrimos Mysql Workbench 6.1

Una vez que se abra al programa, se ingresa con tu usuario y contraseña, hecho esto el espacio de trabajo quedara como el siguiente

Page 5: la mejor forma de Conectar c# con mysql con archivos de configuracion

Paso 2: En el área de consultas escribe el siguiente código:

create database bdbiblioteca;use bdbiblioteca;create table usuarios(Id char(20) ,Nombre char(50),Apellido char(50),primary key (Id));Luego clic en el símbolo , quedara así:

Page 6: la mejor forma de Conectar c# con mysql con archivos de configuracion

PASO 3: Crear el procedimiento almacenado, clic derecho sobre Store Procedure y luego en Create Stored Procedure.

Page 7: la mejor forma de Conectar c# con mysql con archivos de configuracion

Paso 4 Procedimiento almacenado para insertar usuarios.

Copia y pega el siguiente código.

DELIMITER $$CREATE PROCEDURE InsertarUsuario (PId char(20),PNombre char(50),PApellido char(50))BEGINinsert into usuarios (Id,Nombre,Apellido)values (PId,PNombre ,PApellido);END

Nota: en la imagen en la línea numero 17 aparece PI, pero es PId, por que así se llama el parámetro.

Page 8: la mejor forma de Conectar c# con mysql con archivos de configuracion

Al final debe quedar algo así:

PASO 5: Verificar que el procedimiento almacenado funciona, correctamente ejecuta el siguiente código en una consulta clic en y pega el siguiente código

CALL InsertarUsuario('12345','MI NOMBRE','MI APELLIDO');

SELECT * FROM USUARIOS;

La primera línea llama al procedimiento almacenado InsertarUsuario a través de la palabra CALL, y se le envían los parámetros a insertar en la bd, como estos son tipo char (carácter) se escriben dentro de comillas simples, estos son los valores que se insertaran en la bd.

Una vez que escribas los comandos de la consulta presiona el icono , para que se ejecuten todos los comandos línea a línea, es decir primero inserta a través del procedimiento almacenado los valores que se envían por parámetros y luego los muestra través del SELECT.

Nota: También se puede ejecutar una consulta situándose al final de la misma y presionanar CTL+ ENTER, la diferencia radica en que solo se ejecuta la línea en donde este el cursor, mientras que con se ejecutan todas.

Page 9: la mejor forma de Conectar c# con mysql con archivos de configuracion

Quedaría así:

Page 10: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 11: la mejor forma de Conectar c# con mysql con archivos de configuracion

PASO 6 Procedimiento almacenado para editar usuarios.

Repite el paso 3 para crear otro procedimiento almacenado y pega el siguiente código

DELIMITER $$CREATE PROCEDURE `EditarUsuario` (PId char(20),PNombre char(50),PApellido char(50))BEGINupdate Usuarios set Nombre= PNombre,Apellido=PApellido where Id= PID;END

Page 12: la mejor forma de Conectar c# con mysql con archivos de configuracion

PASO 7: Probar el procedimiento almacenado, para esto pega en el área de consulta lo siguiente y clic en el icono

call EdItarUsuario('12345','JUAN DAVID','REDONDO ROBLES');

SELECT * FROM usuarios;

Esta sentencia cambia el nombre anterior “MI NOMBRE” POR JUAN DAVID y “MI APELLIDO “por REDONDO ROBLES quedando así:

Page 13: la mejor forma de Conectar c# con mysql con archivos de configuracion

PASO 8 PROCEDIMIENTO ALMACENADO PARA ELIMINAR REGISTROS

Repite el paso 3 para crear un nuevo procedimiento almacenado y pega lo siguiente:

DELIMITER $$CREATE PROCEDURE `EliminarUsuario` (PID char(20))BEGINdelete from usuarios where ID = PID;ENDLuego clic en apply

Page 14: la mejor forma de Conectar c# con mysql con archivos de configuracion

Debería verse así:

PASO 9: VERIFICAR QUE EL PROCEDIMIENTO FUNCIONA

Como solo se tiene un registro y para que no quede vacía a tabla, inserta cuatro registros más usando el procedimiento almacenado InsertarUsuario, esto en el área de consultas asi:

call InsertarUsuario('1010','JOHANA','PALMA');call InsertarUsuario('1011','CLARA INES ','GOMEZ');call InsertarUsuario('1012','RICARDO ANTONIO ','RODRIGUEZ');call InsertarUsuario('1013','MERIA PAOLA','ZULUAGA');select * from usuarios;

Luego clic en icono para ejecutar los comandos.

Page 15: la mejor forma de Conectar c# con mysql con archivos de configuracion

Luego comprueba el procedimiento EliminarUsuario

CALL EliminarUsuario('12345');select * from usuarios;Para eliminar al usuario JUAN DAVID REDONDO ROBLES y clic en

Page 16: la mejor forma de Conectar c# con mysql con archivos de configuracion

PASO 10: Procedimiento almacenado para buscar un usuario por su nombre

Crear un nuevo procedimiento almacenado (apoyarse del paso 3) copia y pega el siguiente código: DELIMITER $$CREATE PROCEDURE `BuscarUsuario` (NombreABuscar char(50))BEGIN select * from usuarios where Nombre like NombreABuscar;END

Después que se halla escrito el código, clic en apply ,nuevamente apply y por ultimo finish.

Para probar si el procedimiento creado funciona correctamente ejecuta el siguiente código en una consulta clic en y pega el siguiente código

call BuscarUsuario('johana');

Por ultimo ejecuta la sentencia con clic en el icono , el resultado será el siguiente:

Enhorabuena ya está lista la base de datos, que es muy sencilla pero es a modo de ejemplo, ahora hay que darle funcionalidad a través de visual studio, para ello sigue los pasos uno a uno.

Page 17: la mejor forma de Conectar c# con mysql con archivos de configuracion

FUNCIONALIDAD DESDE VISUAL C # 2008

A continuación se muestran todos los pasos a realizar para luego desarrollarlos a profundidad más adelante con ayuda de capturas de pantalla.

1) Crear un proyecto de visual C# con visual Studio2) Agregar un archivo de configuración, el cual administrara la cadena de conexión de la

base de datos, existen dos formas de agregar este archivo, también se explicara cuál es su importancia en un proyecto de software con vs.

3) Agregar las referencias necesarias para trabajar con MYSQL y el archivo appconfig.4) Crear una carpeta en la cual se van a guardar todas las clases de nombre MisClases.5) Crear una clase de Nombre Cadena.cs la cual se comunicara con el archivo app config y

obtener la cadena de conexión.6) Insertar en el formulario todos los elementos necesarios para insertar, editar, 4eliminar y

buscar.7) clase de nombre Mostrar.cs, para agregar la función de mostrar el usuario desde el

formulario.8) clase de nombre Buscar.cs, para agregar la función de Buscar un usuario desde el

formulario.9) clase de nombre Insertar.cs, para agregar la función de agregar un usuario desde el

formulario.10) clase de nombre Editar.cs, para agregar la función de Editar un usuario desde el

formulario.11) clase de nombre Eliminar.cs, para agregar la función de Eliminar un usuario desde el

formulario.12) Prueba y ejecución.

Page 18: la mejor forma de Conectar c# con mysql con archivos de configuracion

1) CREAR UN PROYECTO DE VISUAL C# CON VISUAL STUDIO

1.1 Abrimos visual studio

Page 19: la mejor forma de Conectar c# con mysql con archivos de configuracion

1.2 Creamos un nuevo proyecto

1.3 Escogemos el lenguaje visual c#, la opcion de windows form y por ultimo le cambiamos el nombre de cómo se quiere llamar al proyecto(los tres pasos estan resaltados) por ultimo clic en aceptar.

Page 20: la mejor forma de Conectar c# con mysql con archivos de configuracion

Espacio de trabajo

Page 21: la mejor forma de Conectar c# con mysql con archivos de configuracion

2) AGREGAR UN ARCHIVO DE CONFIGURACIÓN

Un archivo de configuración es aquel que proporcionara La cadena de conexión, en la que se especifica sistema manejador de base de datos ( Mysql en este caso ), la base de datos a utilizar, el servidor y la contraseña de acceso para la misma asi :

MySqlConnection conn = new MySqlConnection("server=127.0.0.1; database=biblioteca; Uid=root; pwd=123456;");

Las palabras resaltadas son las que pueden ser cambiadas, en este caso la base de datos se llama biblioteca y la contraseña es 123456 los demás valores quedan igual.

2.1 Explicación de la importancia de un archivo de configuración

Tomado de parvulos.net Imagine, que hoy desarrolla un sistema con 20 Formularios, la cual va a instalar en 50 Pc’s que utilizaran para la administración de su empresa, su conocimiento sobre las ventajas de usar un archivo de configuración es nula, así que usted uso lo que muchos programadores llegamos a utilizar en nuestro inicios, establecer la cadena de conexión en cada método o función donde necesitemos comunicarnos con la Bd, algo como esto:

C#:

using System.Data.SqlClient;private void btnProbar_Click(object sender, EventArgs e){ using(SqlConnection cnx = new SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True")) { cnx.Open(); MessageBox.Show(cnx.State.ToString()); }}

y para los que tienen mas experiencia pero aun no llegan a conocer los beneficios del archivo de configuración, establecer la cadena de conexión en una variable global del tipo String podría aparentar ser una buena solución ya que se asigna una sola vez y se usa en todas las consultas requeridas.

C#:

using System.Data.SqlClient;

namespace sinAppConfig{ public class Connection

Page 22: la mejor forma de Conectar c# con mysql con archivos de configuracion

{ public static SqlConnection Conexion() { return new SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True"); } }}

Usamos la clase Connection:

private void btnProbar_Click(object sender, EventArgs e){ //Utilizamos la clase connection para abrir la cadena de conexion using(SqlConnection cnx = Connection.Conexion()) { cnx.Open();

MessageBox.Show(cnx.State.ToString()); }}

Bien, continuando con nuestro caso hipotético, imagínese que después de algún tiempo se le notifica de la necesidad de modificar el nombre del server o la ubicación física del mismo, trayendo con esto la necesidad de modificar nuestra cadena de conexión pero, como declaro su cadena de conexión en alguna clase publica o modulo para los de Vb.net y esta clase o modulo se comprimió junto con el Exe al momento de crear su installer ya no tiene acceso a ella desde fuera del proyecto, así que no tendrá otra opción que abrir su proyecto desde el Vs y modificar su cadena de conexión en el lugar donde lo haya declarado, si es en una clase publica o modulo solo tendrá que modificar una sola vez pero, si declaro la cadena en cada método o función donde se requería la comunicación con la Bd tendrá un problema mas grande (aunque no monstruoso), en realidad modificar la cadena de conexión no será el problema puesto que usando la combinación de teclas Ctrl + F podrá fácilmente buscarla y reemplazarla por la nueva.

El problema viene al momento de pasar esta actualización a todas las instalaciones de su Software, ya que como sabrá, al momento de hacer la modificación tendrá que compilar de nuevo los proyectos (el que contiene su desarrollo y el proyecto Setup) e ir a cada equipo donde su software este instalado, desinstalar y posteriormente instalar de nuevo su software, este es el verdadero problema ya que como se abra dado cuenta, no es tarea sencilla ya que la actividad no se resume en una acción si no en varias, ahora si consideramos la disponibilidad de los usuarios para dejarnos trabajar a nosotros mientras ellos se retrasan en sus actividades, estaremos en un problema.

Page 23: la mejor forma de Conectar c# con mysql con archivos de configuracion

¿Solución? usar el archivo de configuración….

Si utiliza un archivo de configuración no tendrá tantos problemas, ya que el utilizarlo simplifica la tarea a únicamente ir al directorio de instalación ubicar el archivo App.Config, abrirlo con un editor de texto como NotePad, modificar su cadena de conexión, guardar y listo a seguir usando su aplicación sin mas ni mas; no necesita abrir el proyecto en el Vs ni compilar, mucho menos instalar De nuevo.

¿Comprende ahora la gran utilidad de este archivo tan simple?…

Hasta este punto creo que ya esta convencidos de la utilidad del archivo de configuración

2.2 FORMA N° 1 DE AGREGAR EL APPCONFIG

Clic en proyecto y propiedades de aplicación

Page 24: la mejor forma de Conectar c# con mysql con archivos de configuracion

clic en configuración, seguido coloca el cursor en donde está el espacio en blanco o clic en la flecha, una vez hecho esto, inmediatamente en la parte derecha en el árbol del proyecto aparece el archivo de configuración.

Abre el archivo appconfig con doble clic o clic derecho abrir copia y pega el siguiente código y guarda cambios.

<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> </configSections> <connectionStrings> <add name="APPcadena" connectionString="server=127.0.0.1; database= bdbiblioteca; Uid=root; pwd=123456" providerName="MySql.Data.MySqlClient" /> </connectionStrings></configuration>

Las palabras resaltadas corresponden al nombre de la base de datos y a la contraseña.

APPcadena: es el nombre que se utilizara para poder tener acceso a este archivo

Page 25: la mejor forma de Conectar c# con mysql con archivos de configuracion

2.3 FORMA N° 2 DE AGREGAR EL APPCONFIG

Sigue las imágenes los pasos se resaltaran de color

Page 26: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 27: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 28: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 29: la mejor forma de Conectar c# con mysql con archivos de configuracion

Si se siguen todos los pasos te quedara de la siguiente manera

Nota: si haces todos los pasos y no sale nada, borra el proyecto, crea uno nuevo y realiza los pasos nuevamente. Está a su gusto por cuál de los dos métodos de agregar el archivo appconfig escoger, les recomiendo el primero.

Page 30: la mejor forma de Conectar c# con mysql con archivos de configuracion

Una vez agregado el archivo appconfig, solo queda configurarlo, para esto abrimos el archivo con doble clic o clic derecho abrir, debe quedar algo igual a esto:

<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> </configSections> <connectionStrings> <add name="WindowsFormsApplication1.Properties.Settings.bibliotecaConnectionString" connectionString="server=127.0.0.1;user id=root;password=123456;database=biblioteca" providerName="MySql.Data.MySqlClient" /> </connectionStrings></configuration>

Solo falta cambiar lo que esta seleccionado por un nombre mas corto, de esta manera se va a llamar la cadena de conexión y guardar cambios,quedaria asi:

<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> </configSections> <connectionStrings> <add name="APPcadena" connectionString="server=127.0.0.1; database= biblioteca; Uid=root; pwd=123456" providerName="MySql.Data.MySqlClient" /> </connectionStrings></configuration>

Nota: los elementos resaltados corresponden a la base de datos y la contraseña de la misma

Page 31: la mejor forma de Conectar c# con mysql con archivos de configuracion

3) AGREGAR LAS REFERENCIAS NECESARIAS PARA TRABAJAR CON MYSQL Y EL ARCHIVO APPCONFIG.

Se agrega la referencia Mysql.data, para trabajar con todas las funcionalidades de MySQL y system.configuration, necesario para manejar el archivo de configuración, para esto damos clic derecho sobre references en el árbol del proyecto y agregar referencia. En la pestaña .NET buscar el elemento System.conguration y pulsar aceptar luego Mysql.data seguido también del botón aceptar

Page 32: la mejor forma de Conectar c# con mysql con archivos de configuracion

4) crear una carpeta en el proyecto de nombre MisClases, para esto clic derecho sobre el proyecto, agregar, nueva carpeta.

5) Crear una clase de Nombre Cadena.cs en la carpeta creada, la cual se comunicara con el archivo appconfig y obtendrá la cadena de conexión. Clic derecho sobre la carpeta MisClases, Agregar,Clase, por ultimo aceptar.

Page 33: la mejor forma de Conectar c# con mysql con archivos de configuracion

Pegamos el siguiente código en la clase y guardamos cambios:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration; //para trabajar con el archivo de configuracion namespace Aplicacion.MisClases//nombre de la aplicación y carpeta de clases es importante tener en cuenta los nombres tanto del proyecto como la de la carpeta { class Cadena { public string CadenaApp; public string Obtenercadena() { // este metodo se usa para obener la cadena de conexion que // esta en el archivo appconfig en donde //se encuentra la cadena de conexion CadenaApp = ConfigurationManager.ConnectionStrings["APPcadena"].ConnectionString;

return CadenaApp; } }}Nota:“APPcadena” debe ser el mismo nombre que esta en el archivo de configuracion

<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> </configSections> <connectionStrings> <add name="APPcadena" connectionString="server=127.0.0.1; database= biblioteca; Uid=root; pwd=123456" providerName="MySql.Data.MySqlClient" /> </connectionStrings></configuration>

Page 34: la mejor forma de Conectar c# con mysql con archivos de configuracion

Para ver si todo va bien sobre la aplicación o sobre la solucion clic derecho generar

Page 35: la mejor forma de Conectar c# con mysql con archivos de configuracion

6) Insertar en el formulario todos los elementos necesarios para insertar, editar, eliminar y buscar se agregan 5 label , 4 textbox ,2 groupbox y 4 botones y en la propiedad name escribe los nombres que están en la imagen, luego en la propiedad Charactercasing de cada textbox cambiarla a upper para que el texto ingresado sea en mayúscula .

7) Mostrar Datos: Para que los datos que están en la tabla Usuarios se puedan ver en el formulario a través del detegridview, es necesario agregar una clase de nombre Mostrar.cs, para crearla se puede apoyase del paso 5, es decir

Clic derecho sobre la carpeta MisClases Agregar Clase Verificar que Archivo de código este seleccionado Colocarle el nombre Mostrar.cs Clic en botón aceptar

Una vez que se crea la clase, se abre automáticamente, copia y pega el siguiente código el cual tiene su explicación.

Page 36: la mejor forma de Conectar c# con mysql con archivos de configuracion

//biblioteca de clases creadas por el visual studio using System;using System.Collections.Generic;using System.Linq;using System.Text;//biblioteca de clases creadas por el programador using System.Data;// para operaciones con datos using MySql.Data;// para operacines con mysql using MySql.Data.MySqlClient;using System.Windows.Forms;// para poder recibir controles por parametrosusing Aplicacion.MisClases;// para tener acceso a la carpeta MisClasesnamespace Aplicacion.MisClases //Cambia lo resaltado por el nombre del proyecto que estes usando en caso que utilices otro nombre{ class Mostrar//este es el nombre de la clase,si le colocaste otro nombre cambialo aquí tambien {

Cadena Obj = new Cadena();// creamos un objeto de la clase Cadena

/* PARAMETROS QUE RECIBE LA FUNCION MostrarDatos * parametro 1: datagrid en donde se va mostrar los datos * parametro 2: Nombre del procedimiento almacenado * parametro 3: Dato buscado ejemplo cuando se busca por nombre * parametro 4: Nombre del parametro que recibe el procedimiento almacenado en la bd */

public void MostrarDatos(DataGridView dataGrid, string Nombreprocedmiento, string DatoBuscado, string Nombreparametro) { Nombreparametro= "@"+ Nombreparametro;

string CadenaApp; CadenaApp = Obj.Obtenercadena();// a traves del objeto Obj accede a la clase cadena y retorna la cadena de conexion que envia el appconfig String stm = Nombreprocedmiento; MySqlConnection conn = new MySqlConnection(CadenaApp); // se crea un objeto de la clase MySqlConnection a el cual se le envia por parametro la cadena de conexion DataTable odtable = new DataTable(); MySql.Data.MySqlClient.MySqlDataAdapter odadapter = new MySql.Data.MySqlClient.MySqlDataAdapter(); try { if (conn.State != ConnectionState.Open) conn.Open(); MySqlCommand cmd = new MySqlCommand(stm, conn); cmd.CommandType = CommandType.StoredProcedure;

Page 37: la mejor forma de Conectar c# con mysql con archivos de configuracion

cmd.Parameters.AddWithValue(Nombreparametro, "%" + DatoBuscado + "%");// para que a mendidia que se escriba valla mostrando los valores cmd.Parameters[Nombreparametro].Direction = ParameterDirection.Input; odadapter.SelectCommand = cmd; odadapter.Fill(odtable); dataGrid.DataSource = odtable; } catch (Exception ex) { MessageBox.Show("No se puedes mostrar los datos verifique la conexion e intente nuevamente !!" + ex.Message); } finally { if (conn.State != ConnectionState.Closed) conn.Close(); conn.Dispose(); } } }}Se quiere que cuando se ejecute el formulario se carguen los datos de la tabla usuarios por lo tanto esta clase se debe ejecutar cuando cargue el formulario. Escribe lo siguiente en el load del form, para esto doble clic en cualquier parte del form que no tenga control o doble clic en la barra de titulo del formulario.

quedara asi:

private void Form1_Load(object sender, EventArgs e) { }

Page 38: la mejor forma de Conectar c# con mysql con archivos de configuracion

Agrega los siguientes bibliotecas de clases esto va debajo de los demas using

using System.Data;// para operaciones con datos using MySql.Data;// para operacines con mysql using MySql.Data.MySqlClient;using Aplicacion.MisClases;

por ultimo crear un objeto de la clase mostrar de arriba del load del form , copia y pega lo que esta en su interior:

Mostrar MostrarUsuarios= new Mostrar();//objeto de la clase mostrar

private void Form1_Load(object sender, EventArgs e) { //El objeto MostrarUsuario accede a la clase Mostrar y hace usuo de la funcion MostrarDatos MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar"); /*PARAMETROS DE LA FUNCION MostrarUsuarios * DrgListaUsuarios: es el datagrid en donde se mostraran los datos * BuscarUsuario: es el nombre de procedimiento creado en la bd es el que se va a ejecutar * " " el tercer parametro es vacio para que muestre todos los registros * NombreABuscar:Es el nombre del parametro que recibe el procedimiento almacenado BuscarUsuario que se encuentra en la bd debe ser el mismo

*/ }Nota: el objeto MostrarUsuario puede ir arriba del load o como se muestra en la siguiente imagen

Page 39: la mejor forma de Conectar c# con mysql con archivos de configuracion

Imagen de todo el proceso, ubica los codigos proporcionados en el lugar exacto

Una vez que hecho los pasos anteriores ejecuta el formulario con F5

Una de las características de la Programación orientada a objetos es reducir la codificación, partiendo de este principio la clase Mostrar.cs es tan potente que esta adaptada para que ejecute cualquier procedimiento almacenado similar al de

Page 40: la mejor forma de Conectar c# con mysql con archivos de configuracion

BuscarUsuarios, por ejemplo suponiendo que se tiene una tabla administrador con sus respectivos id , nombres y demás y también se quiere buscar ya sea por nombre o por apellido, solo tocaría crear un procedimiento almacenado para la nueva tabla crear un nuevo objeto de la clase mostrar y mandarles los correspondientes parámetros en el load del form o en donde se requiera.

8) Funcionalidad buscar: Esta función, ejecuta el mismo procedimiento almacenado utilizado en la función mostrar, solo que esta vez en el espacio “ ” correspondiente al tercer parámetro será cambiado por el texto que se escriba en el textbox TxtBuscar, para esto darle doble clic sobre el control TxtBuscar y agregar el siguiente código :

MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario",this.Txtbuscar.Text, "NombreABuscar");

Quiedaria asi

private void Txtbuscar_TextChanged(object sender, EventArgs e) { MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario",this.Txtbuscar.Text, "NombreABuscar"); }

Imagen

Ejecuta el formulario con F5, veras que inicialmente se cargan en el datagridview DrgLIstaUsuarios todos los registros que están en la tabla usuarios, al ingresar la primera letra en el textbox buscar (Txtbuscar) veras que en el datagrid solo se cargaran

Page 41: la mejor forma de Conectar c# con mysql con archivos de configuracion

los usuarios que tengan la letra o frase a buscar en cualquier parte de la palabra (inicio, mitad, final).asi por ejemplo si escribimos textbox buscar (Txtbuscar) la letra J o se escribe la palabra completa johana, solo muestra todos los datos del usuario Johana, puesto que es el único usuario que tiene esas letras en su nombre asi:

Pero si escribimos la letra I como inicio de una palabra el usuario Johana no será mostrado por que no tiene I en ninguna parte del nombre:

Y si se escribe las letras IA, solo mostrara a RICARDO ANTONIO RODRIGUEZ que es el único usuario que tiene en su Nombre esas letras, más específicamente en el segundo, cuarto, siete y doce carácter correspondientes solo al nombre.

Page 42: la mejor forma de Conectar c# con mysql con archivos de configuracion

9) Funcionalidad Insertar datos a la bd (Insertar Usuarios): Para guardar los datos al

pulsar (BtnGuardar), se ejecutara a través de un objeto una clase de nombre Insertar(próxima a crear), esta comunicará con el procedimiento almacenado InsertarUsuario creado en la bd y guardara los datos. Para crear la clase, guíate del paso 5 para hacer lo siguiente:

Clic derecho sobre la carpeta MisClases Agregar Clase Verificar que Archivo de código este seleccionado Colocarle el nombre Insertar.cs Clic en botón aceptar

Una vez que se crea la clase, se abre automáticamente, copia y pega el siguiente código el cual tiene su explicación.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

// Biblitecas de clases importadas por el programadorusing System.Data;// para operaciones con datos using MySql.Data;// para operacines con mysql using MySql.Data.MySqlClient;using System.Windows.Forms;using Aplicacion.MisClases;

namespace Aplicacion.MisClases{ class Insertar { Cadena Obj = new Cadena();// declaramos los objeto de la clase cadena public void InsertarUsu(string Nombreprocedmiento, string ParametroBd1, string ParametroBd2, string ParametroBd3, string TxtId, string TxtNombre, string TxtApellido) { /*PARAMETROS DE LA FUNCION INSERTARUSU * Nombreprocedmiento: nombre del procedimieto almacenado que tiene la sentencia del insert * ParametroBd1: parametro 1 del procedimiento almacenado InsertarUsuario corresponde al PID * ParametroBd2: parametro 2 del procedimiento almacenado InsertarUsuario corresponde al PNombre * ParametroBd3: parametro 3 del procedimiento almacenado InsertarUsuario corresponde al PApellido * TxtId: parametro que recibe lo que se escribe en el textbox id

Page 43: la mejor forma de Conectar c# con mysql con archivos de configuracion

* TxtNombre:parametro que recibe lo que se escribe en el textbox nombre * TxtApellido:parametro que recibe lo que se escribe en el textbox apellido * Todos estos parametros seran mandados a esta clase desde el formulario que tenga el boton guardar */ string CadenaApp;

CadenaApp = Obj.Obtenercadena();// le asigamos la cadena de conexion a la variable CadenaApp MySqlConnection conn = new MySqlConnection(CadenaApp); DataTable odtable = new DataTable(); MySql.Data.MySqlClient.MySqlDataAdapter odadapter = new MySql.Data.MySqlClient.MySqlDataAdapter(); try { if (conn.State != ConnectionState.Open) conn.Open(); MySqlCommand cmd = new MySqlCommand(Nombreprocedmiento, conn); cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("?" + ParametroBd1, TxtId); cmd.Parameters["?" + ParametroBd1].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("?" + ParametroBd2, TxtNombre); cmd.Parameters["?" + ParametroBd2].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("?" + ParametroBd3, TxtApellido); cmd.Parameters["?" + ParametroBd3].Direction = ParameterDirection.Input;

odadapter.SelectCommand = cmd; cmd.ExecuteNonQuery(); //MessageBox .Show("Usuario Guardado Con Exito!!",MessageBoxIcon.Information);

MessageBox.Show("Los datos se han inserttado exitosamente ", " SISVEUG SOFTWARE ", MessageBoxButtons.OK, MessageBoxIcon.Information);

} catch (Exception ex) { MessageBox.Show(" No se pueden guardar los datos \n ERROR: " + ex.Message, "Aplicacion de ejemplo ", MessageBoxButtons.OK, MessageBoxIcon.Stop);

// MessageBox.Show("No se puedo guardar!! ","ejemplo ",MessageBoxButtons.OK,MessageBoxIcon.Information);

Page 44: la mejor forma de Conectar c# con mysql con archivos de configuracion

} finally { if (conn.State != ConnectionState.Closed) conn.Close(); conn.Dispose(); }

} }}

En el caso de que se tenga otra tabla con tres campos esta clase funcionara exitosamente solo hay que cambiarles los parametros a la hora de llamar a la funcion.Una vez que esta clase este creada se guarda y se genera el proyecto a ver si no hay errores, luego en el

formulario doble clic en el boton guardar y pega el siguiente codigo en la parte de arriba:

Insertar InsertarRegistros = new Insertar();

Luego en el interior de la funcion

InsertarRegistros.InsertarUsu("InsertarUsuario", "Pid", "PNombre", "PApellido", this.TxtId.Text, this.TxtNombre.Text, this.TxtApellido.Text);

/*PARAMETROS DE LA FUNCION * InsertarUsuario: nombre del procedimieto almacenado que tiene la sentencia del insert* Pid: parametro 1 del procedimiento almacenado InsertarUsuario* PNombre: parametro 2 del procedimiento almacenado InsertarUsuario* PApellido: parametro 3 del procedimiento almacenado InsertarUsuario * TxtId: se envia por parametro lo que esta escrito en el textbox del id * TxtNombre:envia que recibe lo que se escribe en el textbox nombre* TxtApellido:envia que recibe lo que se escribe en el textbox apellido*/ MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar");// para que cuando se guarden los datos // se actualize el datagrid y se muestre es que se acaba de ingresar Quedaria asi:

Insertar InsertarRegistros = new Insertar(); private void GuardarBtn_Click(object sender, EventArgs e) {InsertarRegistros.InsertarUsu("InsertarUsuario", "Pid", "PNombre", "PApellido", this.TxtId.Text, this.TxtNombre.Text, this.TxtApellido.Text); MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar] }

Page 45: la mejor forma de Conectar c# con mysql con archivos de configuracion

Imagen de apoyo:

Ejecuta el formulario con F5

Page 46: la mejor forma de Conectar c# con mysql con archivos de configuracion

10) Funcionalidad Editar: Se quiere que dando clic derecho sobre el registro se muestre un menú con la opción de editar el cual mandara los datos a los textbox para poder cambiarlos y al pulsar el botón editar se actualizarán, para esto se reutilizara una la de Insertar previamente hecha, doble clic en el botón editar y escribe lo siguiente:

//ya no se escibe Insertarusuario sino EditarUsuario InsertarRegistros.InsertarUsu("EditarUsuario", "Pid", "PNombre", "PApellido", this.TxtId.Text, this.TxtNombre.Text, this.TxtApellido.Text);/*PARAMETROS DE LA FUNCION * InsertarUsuario: nombre del procedimieto almacenado que tiene la sentencia del EDITAR* Pid: parametro 1 del procedimiento almacenado InsertarUsuario* PNombre: parametro 2 del procedimiento almacenado InsertarUsuario* PApellido: parametro 3 del procedimiento almacenado InsertarUsuario * TxtId: se envia por parametro lo que esta escrito en el textbox del id * TxtNombre:envia que recibe lo que se escribe en el textbox nombre* TxtApellido:envia que recibe lo que se escribe en el textbox apellido MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar");// para que cuando se guarden los datos // se actualize el datagrid y se muestre lo que se acaba de ingresarCódigo junto a la función clic del botón

// como ya el objeto InsertarRegisto se creo en el paso anterior no es necesario volverlo a crear, pero si por el contrario si se le quiere dar una clase especifica para editar si hay que crear un objeto private void BtnEditar_Click(object sender, EventArgs e){InsertarRegistros.InsertarUsu("EditarUsuario", "Pid", "PNombre", "PApellido", this.TxtId.Text, this.TxtNombre.Text, this.TxtApellido.Text); MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar"); }

Page 47: la mejor forma de Conectar c# con mysql con archivos de configuracion

Ahora solo falta que al darle clic sobre cualquier registro se muestre un menú con la opción Editar, para esto realiza los siguientes pasos:

Selecciona el datagrid y en la propiedad selection mode escoge FullRowSelect, para que al darle clic a una celda en especial se seleccione toda la fila tal como se muestra en la imagen:

Agrega el control contextMenuStrip , clic en él y escribir Editar y eliminar

Selecciona el datagrid y en la propiedad contextMenuStrip escoge contextMenuStrip1 para que cuando se dé clic derecho salga el menú anterior, es decir se le esta asignando el menú al datagrid.

Page 48: la mejor forma de Conectar c# con mysql con archivos de configuracion

Selecciona contextMenuStrip y doble en el menú editar y escribe lo siguiente

this.TxtId.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Id"].Value;//se le asigna al texbox id el contenido de la celda ID del datagrid this.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].Value;//se le asigna al texbox Nombre el contenido de la celda Nombre del datagridthis.TxtApellido.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Apellido"].Value;//se le asigna al texbox Apellido el contenido de la celda Apellido del datagrid

Código junto a la función clic del menú editar

private void editarToolStripMenuItem_Click(object sender, EventArgs e) { this.TxtId.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Id"].Value;//se le asigna al texbox id el contenido de la celda ID del datagridthis.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].Value;//se le asigna al texbox Nombre el contenido de la celda Nombre del datagridthis.TxtApellido.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Apellido"].Value;//se le asigna al texbox Apellido el contenido de la celda Apellido del datagrid

}Nota: los campos resaltados deber ser los mismos que se muestran en el datagrid, es decir tal cual como se muestra al cargar el formulario

Para probarlo ejecuta con F5,clic derecho sobre cualquier registro y editar, cambia los valores en los textbox y clic enel boton editar actualizar al usuario

Page 49: la mejor forma de Conectar c# con mysql con archivos de configuracion
Page 50: la mejor forma de Conectar c# con mysql con archivos de configuracion

10) Funcionalidad Eliminar: En el paso anterior se agregó un contextMenuStrip el cual se asignó al datadrid y se programó la opción Editar, ahora solo falta programar la función eliminar.

Agrega una nueva clase en la carpeta MisClases de nombre Eliminar y pega el siguiente código:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;// para operaciones con datos using MySql.Data;// para operacines con mysql using MySql.Data.MySqlClient;using System.Windows.Forms;using Aplicacion.MisClases;

namespace Aplicacion.MisClases{ class Eliminar {Cadena Obj = new Cadena(); // objeto de la clase cadena public void EliminarDatos(string NombreprocedmientoBd, string ParametroBd, string valorEliminar) { string CadenaApp; CadenaApp = Obj.Obtenercadena();// le asigamos la cadena de conexion a la variable CadenaApp // llamamos a la clase obtener cadena // Int64 valor = (Int64)datautor.CurrentRow.Cells["idautor"].Value; String stm = NombreprocedmientoBd; MySqlConnection conn = new MySqlConnection(CadenaApp); DataTable odtable = new DataTable(); MySql.Data.MySqlClient.MySqlDataAdapter odadapter = new MySql.Data.MySqlClient.MySqlDataAdapter(); try { if (conn.State != ConnectionState.Open) conn.Open(); MySqlCommand cmd = new MySqlCommand(stm, conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("?" + ParametroBd, valorEliminar); cmd.Parameters["?" + ParametroBd].Direction = ParameterDirection.Input; odadapter.SelectCommand = cmd; cmd.ExecuteNonQuery(); MessageBox.Show("Registro Eliminado Con Exito!!", "Sistema Vertical", MessageBoxButtons.OK, MessageBoxIcon.Information); // mostraraut(textBox1.Text); } catch (Exception ex) {

Page 51: la mejor forma de Conectar c# con mysql con archivos de configuracion

MessageBox.Show("No se puedo guardar!!" + ex.Message); } finally { if (conn.State != ConnectionState.Closed) conn.Close(); conn.Dispose(); } } }}

Doble clic sobre la opcion Eliminar del contextMenuStrip y pega el siguiente código

string Id = Convert.ToString(DrgListaUsuarios.CurrentRow.Cells["Id"].Value);string Nombre = Convert.ToString(DrgListaUsuarios.CurrentRow.Cells["Nombre"].Value);DialogResult dialog = MessageBox.Show("Esta seguro que desea eliminar el este registro " + Id + " " + Nombre + " No se podran deshacer los cambios", "Eliminar Usuario", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); if (dialog == DialogResult.OK) { EliminarCliente.EliminarDatos("EliminarUsuario", "PId", Id); MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar"); }

Código junto a su función clic de menú eliminar

private void eliminarToolStripMenuItem_Click(object sender, EventArgs e) {Eliminar EliminarCliente = new Eliminar();// Objeto de la clase eliminar string Id = Convert.ToString(DrgListaUsuarios.CurrentRow.Cells["Id"].Value);string Nombre = Convert.ToString(DrgListaUsuarios.CurrentRow.Cells["Nombre"].Value);DialogResult dialog = MessageBox.Show("Esta seguro que desea eliminar el este registro " + Id + " " + Nombre + " No se podran deshacer los cambios", "Eliminar Usuario", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); if (dialog == DialogResult.OK) { EliminarCliente.EliminarDatos("EliminarUsuario", "PId", Id); MostrarUsuarios.MostrarDatos(DrgListaUsuarios, "BuscarUsuario", "", "NombreABuscar"); }

}

Page 52: la mejor forma de Conectar c# con mysql con archivos de configuracion

Prueba de la

funcionalidad realizada

caca

Page 53: la mejor forma de Conectar c# con mysql con archivos de configuracion

Conclusión

Al haber realizado este trabajo se puede apreciar la forma correcta de conectar MySql con VS, a través del archivo de configuración y clases. A demás se puede notar las características de la programación orientada a objetos como la reutilización de código, asi por ejemplo la clase InsertarUsuario inicialmente se creo para correr el procedimiento almacenado de inserción, pero con esta propiedad de la P.O.O se pudo adaptar para que ejecutara el procedimiento almacenado EditarUsuario.

Espero que este articulo sea de gran ayuda para ustedes y no olviden dejar algún comentario si les gusto.

Page 54: la mejor forma de Conectar c# con mysql con archivos de configuracion