SlideShare una empresa de Scribd logo
1 de 53
CONEXION DE VISUAL C#.NET 2008 Y MYSQL WORKBENCH 6.1, A TRAVES DE CLASES Y ARCHIVOS
DE CONFIGURACION(APPCONFIG)PARAREALIZAR 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
INTRODUCCION
A travésde este escrito se pretende compartirconocimientosa 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óny búsquedadesdeun 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 buscar
3. 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.
CREACION DE LA BASE DE DATOS
Paso 1: Abrimos Mysql Workbench 6.1
Una vez que se abra al programa,se ingresacontu usuarioy contraseña,hechoesto el espacio de
trabajo quedara como el siguiente
Paso 2: En el área de consultasescribe el siguientecódigo:
createdatabase bdbiblioteca;
use bdbiblioteca;
createtable usuarios
(
Id char(20),
Nombre char(50),
Apellidochar(50),
primarykey (Id)
);
Luegoclic enel símbolo ,quedaraasí:
PASO 3: Crearel procedimientoalmacenado,clicderechosobre Store Procedure yluegoen
Create Stored Procedure.
Paso 4 Procedimiento almacenado para insertar usuarios.
Copiay pega el siguiente código.
DELIMITER $$
CREATE PROCEDURE InsertarUsuario(PId char(20),PNombrechar(50),PApellido char(50))
BEGIN
insertinto usuarios(Id,Nombre,Apellido)
values (PId,PNombre ,PApellido);
END
Nota: enla imagenenla líneanumero17 aparece PI, peroes PId,por que así se llamael
parámetro.
Al final debe quedaralgoasí:
PASO 5: Verificarque el procedimientoalmacenadofunciona, correctamenteejecutael siguiente
códigoenuna consultaclicen y pegael siguiente código
CALL InsertarUsuario('12345','MI NOMBRE','MI APELLIDO');
SELECT * FROM USUARIOS;
La primeralíneallamaal procedimientoalmacenadoInsertarUsuario atravésde 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
todosloscomandoslíneaa línea, esdecirprimeroinsertaatravésdel procedimiento almacenado
los valores que se envían por parámetros y luego los muestra través del SELECT.
Nota: Tambiénse puede ejecutarunaconsultasituá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.
Quedaríaasí:
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))
BEGIN
update Usuarios set Nombre= PNombre,Apellido=PApellido where Id= PID;
END
PASO 7: Probarel procedimientoalmacenado,paraesto pegaenel área de consultalosiguiente y
clicen el icono
call EdItarUsuario('12345','JUAN DAVID','REDONDOROBLES');
SELECT * FROMusuarios;
Esta sentenciacambiael nombre anterior “MINOMBRE” PORJUAN DAVID y “MIAPELLIDO “por
REDONDOROBLES quedandoasí:
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))
BEGIN
delete from usuarios where ID = PID;
END
Luego clic en apply
Debería verse así:
PASO 9: VERIFICARQUE EL PROCEDIMIENTO FUNCIONA
Comosolose tiene unregistroypara que no quede vacíaa tabla,insertacuatroregistros más
usandoel procedimientoalmacenadoInsertarUsuario,estoenel áreade consultasasi:
call InsertarUsuario('1010','JOHANA','PALMA');
call InsertarUsuario('1011','CLARA INES','GOMEZ');
call InsertarUsuario('1012','RICARDOANTONIO','RODRIGUEZ');
call InsertarUsuario('1013','MERIA PAOLA','ZULUAGA');
select* fromusuarios;
Luegoclic enicono para ejecutarloscomandos.
Luegocompruebael procedimiento EliminarUsuario
CALL EliminarUsuario('12345');
select* from usuarios;
Para eliminaral usuario JUAN DAVIDREDONDOROBLES y clic en
PASO 10: Procedimiento almacenado para buscar un usuario por su nombre
Crear unnuevoprocedimientoalmacenado(apoyarsedel paso3) copiay pegael siguiente código:
DELIMITER $$
CREATE PROCEDURE `BuscarUsuario` (NombreABuscar char(50))
BEGIN
select * from usuarios where Nombre like NombreABuscar;
END
Despuésque se hallaescritoel código,clicen apply,nuevamenteapply ypor ultimo finish.
Para probar si el procedimiento creadofuncionacorrectamente ejecutael siguiente códigoenuna
consultaclicen y pegael siguiente código
call BuscarUsuario('johana');
Por ultimoejecutalasentenciaconclicenel icono , el resultadoseráel siguiente:
Enhorabuenayaestá listalabase de datos, que esmuysencillaperoesa modode ejemplo, ahora
hay que darle funcionalidadatravésde visual studio,paraellosigue lospasosunoauno.
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 Studio
2) Agregar un archivo de configuración, el cual administrara la cadena de conexión de la
base de datos, existen dosformasde agregareste archivo,tambiénse 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 unacarpeta enla cual se van a guardar todas lasclasesde 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) Insertarenel formulariotodosloselementosnecesarios 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.
1) CREAR UN PROYECTO DE VISUAL C# CON VISUAL STUDIO
1.1 Abrimos visual studio
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.
Espacio de trabajo
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
especificasistemamanejadorde base de datos ( Mysql eneste 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 palabrasresaltadassonlas que puedensercambiadas,eneste casolabase de datos se llama
bibliotecay lacontraseñaes 123456 losdemásvaloresquedanigual.
2.1 Explicaciónde 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
{
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.
¿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
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
2.3 FORMA N° 2 DE AGREGAR EL APPCONFIG
Sigue las imágenes los pasos se resaltaran de color
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.
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.bibliotecaConnectionSt
ring"
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
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
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.
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>
Para ver si todo va bien sobre la aplicación o sobre la solucion clic derecho
generar
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.
//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 parametros
using Aplicacion.MisClases;// para tener acceso a la carpeta MisClases
namespace 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;
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)
{
}
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
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
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
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.
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 programador
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 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
* 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);
}
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]
}
Imagen de apoyo:
Ejecuta el formulario con F5
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
ingresar
Có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");
}
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.
 Selecciona contextMenuStrip y doble en el menú editar y escribe lo siguiente
this.TxtId.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Id"].Value;//s
e le asigna al texbox id el contenido de la celda ID del datagrid
this.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].V
alue;//se le asigna al texbox Nombre el contenido de la celda Nombre del
datagrid
this.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;//s
e le asigna al texbox id el contenido de la celda ID del datagrid
this.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].V
alue;//se le asigna al texbox Nombre el contenido de la celda Nombre del
datagrid
this.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
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)
{
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");
}
}
 Prueba de la funcionalidad realizada
caca
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.
 la mejor forma de Conectar c# con mysql con archivos de configuracion

Más contenido relacionado

La actualidad más candente

Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datostickyandres
 
Manual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoManual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoatak
 
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...Ivan Petrlik
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.netcedido
 
CONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERCONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERDarwin Durand
 
Visual basic 2010 data por codigo
Visual basic 2010 data por codigoVisual basic 2010 data por codigo
Visual basic 2010 data por codigojuan fernandez
 
Replicación SQL Server 2008
Replicación SQL Server 2008Replicación SQL Server 2008
Replicación SQL Server 2008UTA
 
Bases de datos hendric gutierrez
Bases de datos hendric gutierrezBases de datos hendric gutierrez
Bases de datos hendric gutierrezHendricGutierrez
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server PEPE QH
 
Conexión c# sql server
Conexión c# sql serverConexión c# sql server
Conexión c# sql serverLUZ ARIZPE
 
Paquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizadaPaquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizadaJuan Carlos Martinez Riesgo
 
001 conexion-con-bd
001 conexion-con-bd001 conexion-con-bd
001 conexion-con-bdTashi Quito
 
Conectando visual basic 6.0 a bases de datos
Conectando visual basic 6.0 a bases de datosConectando visual basic 6.0 a bases de datos
Conectando visual basic 6.0 a bases de datosRafaelAponte16
 
Como conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverComo conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverKarolaynCardozo1
 

La actualidad más candente (20)

Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datos
 
Informe enlazamiento
Informe enlazamientoInforme enlazamiento
Informe enlazamiento
 
Manual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoManual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a paso
 
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
 
Reportes
ReportesReportes
Reportes
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.net
 
CONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVERCONEXION VISUAL STUDIO.NET - SQL SERVER
CONEXION VISUAL STUDIO.NET - SQL SERVER
 
Visual basic 2010 data por codigo
Visual basic 2010 data por codigoVisual basic 2010 data por codigo
Visual basic 2010 data por codigo
 
manual visual basic 02
manual visual basic 02 manual visual basic 02
manual visual basic 02
 
Replicación SQL Server 2008
Replicación SQL Server 2008Replicación SQL Server 2008
Replicación SQL Server 2008
 
Bases de datos hendric gutierrez
Bases de datos hendric gutierrezBases de datos hendric gutierrez
Bases de datos hendric gutierrez
 
Pasos para Instalar MySQL server
Pasos para Instalar MySQL server Pasos para Instalar MySQL server
Pasos para Instalar MySQL server
 
Conexión c# sql server
Conexión c# sql serverConexión c# sql server
Conexión c# sql server
 
Reportes
ReportesReportes
Reportes
 
Paquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizadaPaquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizada
 
Manual my sql
Manual my sqlManual my sql
Manual my sql
 
001 conexion-con-bd
001 conexion-con-bd001 conexion-con-bd
001 conexion-con-bd
 
Conectando visual basic 6.0 a bases de datos
Conectando visual basic 6.0 a bases de datosConectando visual basic 6.0 a bases de datos
Conectando visual basic 6.0 a bases de datos
 
Como conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql serverComo conectar visual basic 6.0 a una base de datos microsoft sql server
Como conectar visual basic 6.0 a una base de datos microsoft sql server
 
Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)
 

Destacado (20)

Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
Historias de usuario¿Por qué? ¿Qué son? ¿Cómo son?
 
Biotecnología en la Reproducción y Mejoramiento Animal
Biotecnología en la Reproducción y Mejoramiento AnimalBiotecnología en la Reproducción y Mejoramiento Animal
Biotecnología en la Reproducción y Mejoramiento Animal
 
Programa ..
Programa ..Programa ..
Programa ..
 
atl vs btl
atl vs btlatl vs btl
atl vs btl
 
La logistica en mi empresa
La logistica en mi empresaLa logistica en mi empresa
La logistica en mi empresa
 
diarios, informe
diarios, informediarios, informe
diarios, informe
 
Componentes del examen enes plinio pazos
Componentes del examen enes plinio pazosComponentes del examen enes plinio pazos
Componentes del examen enes plinio pazos
 
Matematicas terminada
Matematicas terminadaMatematicas terminada
Matematicas terminada
 
Ma torrespalomino procedimientos
Ma torrespalomino procedimientosMa torrespalomino procedimientos
Ma torrespalomino procedimientos
 
El plagio
El plagioEl plagio
El plagio
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1
 
Presentación denwa gerencia.
Presentación denwa gerencia.Presentación denwa gerencia.
Presentación denwa gerencia.
 
Que es un sistema operativo blogger
Que es un sistema operativo bloggerQue es un sistema operativo blogger
Que es un sistema operativo blogger
 
Clonación de humanos y la iglesia
Clonación de humanos y la iglesiaClonación de humanos y la iglesia
Clonación de humanos y la iglesia
 
Yensi sierra nformatica empresarial
Yensi sierra nformatica empresarialYensi sierra nformatica empresarial
Yensi sierra nformatica empresarial
 
Alexia. 1ero (1)
Alexia. 1ero (1)Alexia. 1ero (1)
Alexia. 1ero (1)
 
Kelvis aponte tema 5
Kelvis aponte tema 5Kelvis aponte tema 5
Kelvis aponte tema 5
 
Salas vallejo bloque_5_(opcion_1)
Salas vallejo bloque_5_(opcion_1)Salas vallejo bloque_5_(opcion_1)
Salas vallejo bloque_5_(opcion_1)
 
7/8
7/87/8
7/8
 
Multimedia
Multimedia Multimedia
Multimedia
 

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

Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraMariaphlb
 
Documentacion del proyecto
Documentacion del proyectoDocumentacion del proyecto
Documentacion del proyectoFernando Sorto
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaLuis Beltran
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basicsantiagomario8
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datosRafael Quintero
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monettiangelinamonetti1
 
Como conectar visual basic a las bases de josue manrique 27 332 672
Como conectar visual basic a las  bases de josue manrique 27 332 672Como conectar visual basic a las  bases de josue manrique 27 332 672
Como conectar visual basic a las bases de josue manrique 27 332 672JosueManrique3
 
manual-conexion-net beanmysql
 manual-conexion-net beanmysql manual-conexion-net beanmysql
manual-conexion-net beanmysqlperjam100
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 Ambar Larrazabal
 
Base de datos Juan Gomez 27046004 #44
Base de datos Juan Gomez 27046004 #44 Base de datos Juan Gomez 27046004 #44
Base de datos Juan Gomez 27046004 #44 JuanGomez928
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacionjohanadoria
 
Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021lissette_torrealba
 
Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel Cervantes
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)javier_ot99
 

Similar a la mejor forma de Conectar c# con mysql con archivos de configuracion (20)

Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María Parra
 
Documentacion del proyecto
Documentacion del proyectoDocumentacion del proyecto
Documentacion del proyecto
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basic
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
284
284284
284
 
Como conectar visual basic a las bases de josue manrique 27 332 672
Como conectar visual basic a las  bases de josue manrique 27 332 672Como conectar visual basic a las  bases de josue manrique 27 332 672
Como conectar visual basic a las bases de josue manrique 27 332 672
 
manual-conexion-net beanmysql
 manual-conexion-net beanmysql manual-conexion-net beanmysql
manual-conexion-net beanmysql
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
 
Base de datos Juan Gomez 27046004 #44
Base de datos Juan Gomez 27046004 #44 Base de datos Juan Gomez 27046004 #44
Base de datos Juan Gomez 27046004 #44
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 
Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021
 
Dprn3 u3 a1_rahv
Dprn3 u3 a1_rahvDprn3 u3 a1_rahv
Dprn3 u3 a1_rahv
 
Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%Dayismel cervantes 3_er corte 1er 20%
Dayismel cervantes 3_er corte 1er 20%
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
DAM-S7.pptx
DAM-S7.pptxDAM-S7.pptx
DAM-S7.pptx
 

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

  • 1. CONEXION DE VISUAL C#.NET 2008 Y MYSQL WORKBENCH 6.1, A TRAVES DE CLASES Y ARCHIVOS DE CONFIGURACION(APPCONFIG)PARAREALIZAR 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
  • 2. INTRODUCCION A travésde este escrito se pretende compartirconocimientosa 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óny búsquedadesdeun 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 buscar 3. 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.
  • 3. CREACION DE LA BASE DE DATOS Paso 1: Abrimos Mysql Workbench 6.1 Una vez que se abra al programa,se ingresacontu usuarioy contraseña,hechoesto el espacio de trabajo quedara como el siguiente
  • 4. Paso 2: En el área de consultasescribe el siguientecódigo: createdatabase bdbiblioteca; use bdbiblioteca; createtable usuarios ( Id char(20), Nombre char(50), Apellidochar(50), primarykey (Id) ); Luegoclic enel símbolo ,quedaraasí:
  • 5. PASO 3: Crearel procedimientoalmacenado,clicderechosobre Store Procedure yluegoen Create Stored Procedure.
  • 6. Paso 4 Procedimiento almacenado para insertar usuarios. Copiay pega el siguiente código. DELIMITER $$ CREATE PROCEDURE InsertarUsuario(PId char(20),PNombrechar(50),PApellido char(50)) BEGIN insertinto usuarios(Id,Nombre,Apellido) values (PId,PNombre ,PApellido); END Nota: enla imagenenla líneanumero17 aparece PI, peroes PId,por que así se llamael parámetro.
  • 7. Al final debe quedaralgoasí: PASO 5: Verificarque el procedimientoalmacenadofunciona, correctamenteejecutael siguiente códigoenuna consultaclicen y pegael siguiente código CALL InsertarUsuario('12345','MI NOMBRE','MI APELLIDO'); SELECT * FROM USUARIOS; La primeralíneallamaal procedimientoalmacenadoInsertarUsuario atravésde 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 todosloscomandoslíneaa línea, esdecirprimeroinsertaatravésdel procedimiento almacenado los valores que se envían por parámetros y luego los muestra través del SELECT. Nota: Tambiénse puede ejecutarunaconsultasituá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.
  • 9. 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)) BEGIN update Usuarios set Nombre= PNombre,Apellido=PApellido where Id= PID; END
  • 10. PASO 7: Probarel procedimientoalmacenado,paraesto pegaenel área de consultalosiguiente y clicen el icono call EdItarUsuario('12345','JUAN DAVID','REDONDOROBLES'); SELECT * FROMusuarios; Esta sentenciacambiael nombre anterior “MINOMBRE” PORJUAN DAVID y “MIAPELLIDO “por REDONDOROBLES quedandoasí:
  • 11. 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)) BEGIN delete from usuarios where ID = PID; END Luego clic en apply
  • 12. Debería verse así: PASO 9: VERIFICARQUE EL PROCEDIMIENTO FUNCIONA Comosolose tiene unregistroypara que no quede vacíaa tabla,insertacuatroregistros más usandoel procedimientoalmacenadoInsertarUsuario,estoenel áreade consultasasi: call InsertarUsuario('1010','JOHANA','PALMA'); call InsertarUsuario('1011','CLARA INES','GOMEZ'); call InsertarUsuario('1012','RICARDOANTONIO','RODRIGUEZ'); call InsertarUsuario('1013','MERIA PAOLA','ZULUAGA'); select* fromusuarios; Luegoclic enicono para ejecutarloscomandos.
  • 13. Luegocompruebael procedimiento EliminarUsuario CALL EliminarUsuario('12345'); select* from usuarios; Para eliminaral usuario JUAN DAVIDREDONDOROBLES y clic en
  • 14. PASO 10: Procedimiento almacenado para buscar un usuario por su nombre Crear unnuevoprocedimientoalmacenado(apoyarsedel paso3) copiay pegael siguiente código: DELIMITER $$ CREATE PROCEDURE `BuscarUsuario` (NombreABuscar char(50)) BEGIN select * from usuarios where Nombre like NombreABuscar; END Despuésque se hallaescritoel código,clicen apply,nuevamenteapply ypor ultimo finish. Para probar si el procedimiento creadofuncionacorrectamente ejecutael siguiente códigoenuna consultaclicen y pegael siguiente código call BuscarUsuario('johana'); Por ultimoejecutalasentenciaconclicenel icono , el resultadoseráel siguiente: Enhorabuenayaestá listalabase de datos, que esmuysencillaperoesa modode ejemplo, ahora hay que darle funcionalidadatravésde visual studio,paraellosigue lospasosunoauno.
  • 15. 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 Studio 2) Agregar un archivo de configuración, el cual administrara la cadena de conexión de la base de datos, existen dosformasde agregareste archivo,tambiénse 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 unacarpeta enla cual se van a guardar todas lasclasesde 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) Insertarenel formulariotodosloselementosnecesarios 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.
  • 16. 1) CREAR UN PROYECTO DE VISUAL C# CON VISUAL STUDIO 1.1 Abrimos visual studio
  • 17. 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.
  • 19. 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 especificasistemamanejadorde base de datos ( Mysql eneste 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 palabrasresaltadassonlas que puedensercambiadas,eneste casolabase de datos se llama bibliotecay lacontraseñaes 123456 losdemásvaloresquedanigual. 2.1 Explicaciónde 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
  • 20. { 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.
  • 21. ¿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
  • 22. 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
  • 23. 2.3 FORMA N° 2 DE AGREGAR EL APPCONFIG Sigue las imágenes los pasos se resaltaran de color
  • 24.
  • 25.
  • 26.
  • 27. 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.
  • 28. 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.bibliotecaConnectionSt ring" 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
  • 29. 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
  • 30. 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.
  • 31. 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>
  • 32. Para ver si todo va bien sobre la aplicación o sobre la solucion clic derecho generar
  • 33. 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.
  • 34. //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 parametros using Aplicacion.MisClases;// para tener acceso a la carpeta MisClases namespace 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;
  • 35. 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) { }
  • 36. 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
  • 37. 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 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
  • 38. 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 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
  • 39. 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.
  • 40. 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 programador 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 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
  • 41. * 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);
  • 42. } 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] }
  • 43. Imagen de apoyo: Ejecuta el formulario con F5
  • 44. 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 ingresar Có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"); }
  • 45. 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.
  • 46.  Selecciona contextMenuStrip y doble en el menú editar y escribe lo siguiente this.TxtId.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Id"].Value;//s e le asigna al texbox id el contenido de la celda ID del datagrid this.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].V alue;//se le asigna al texbox Nombre el contenido de la celda Nombre del datagrid this.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;//s e le asigna al texbox id el contenido de la celda ID del datagrid this.TxtNombre.Text=(string)DrgListaUsuarios.CurrentRow.Cells["Nombre"].V alue;//se le asigna al texbox Nombre el contenido de la celda Nombre del datagrid this.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
  • 47.
  • 48.
  • 49. 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) {
  • 50. 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"); } }
  • 51.  Prueba de la funcionalidad realizada caca
  • 52. 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.