Conexiones .Net Con Mysql

21 octubre, 2010 at 16:49 (Ado.Net, C#, SharpDevelop, Visual Studio)

Introducción.

Mysql es una base de datos open source aunque tiene una versión comercial llamada Mysql Enterprice.

Mysql es una base de datos muy rápida en respuesta, es muy usada en ámbitos web, su gran respuesta es una de sus mayores cualidades, aunque al permitir tal velocidad en su respuesta sacrifica ciertos aspectos que el desarrollador tiene que tomar en cuenta una de ellas es que no cuenta con integridad referencial lo cual significa que no contamos con llaves foráneas y relacionamiento, la seguridad y la integridad de las tabla están a cargo del desarrollador cuidando esto detalles.

Para la conexión a la base de datos Mysql .Net no cuenta con una librería propia para este motor de base de datos pero eso no es un problema ya que para la mayoría de las base de datos (si no todas) existen librerías para .Net que permiten la conexión a la base de datos. Mysql ha desarrollado una librería para la conexión de la base de datos como se verá más adelante. Esta librería se presenta en tres versiones, una de ellas (la que usaremos) es un tipo instalador la cual instala soporte para Mysql y adiciona a .Net para que estén disponibles en Visual Studio las librerías para la conexión con este motor de base de datos. La segunda es de tipo librería es decir que no es un instalador y que tenemos que importar la librería a nuestro proyecto, esta forma también es válida para la conexión con Mono en Linux y la tercera que es el código fuente de la librería por si alguien quiere modificar algo.

Usaremos Windows Form para la prueba y uso de esta librería. Aunque para este ejemplo usamos Visual Studio 2010 con cualquier versión de Visual Studio podremos realizar la conexión la librería que instalaremos, es un complemento a Visual Studio la cual como dijimos añade a .Net Framework la librería y da soporte usando el asistente de conexión al estilo de SQL Server, pero este instalador hasta la fecha solo da el soporte para VS 2008 y no para la versión VS 2010 aunque es no es problema solo no podremos usar el asistente de conexión (no usaremos para el ejemplo) pero si podremos importar la librería.

Para la gestión con el servidor de base de datos usaremos SQLyog Enterprice es una herramienta muy completa de fácil manejo que permite manejar todos los aspectos de mysql. También podemos usar phpmyadmin aunque necesita apache para funcionar, existen otras alternativas pero Sqlyog es una herramienta muy completa y que vale la pena probarla.

Materiales.

  1.  

Manos a la Obra.

1.- Primero Crearemos las tablas en Mysql, podemos crear las tablas con Sqlyog enterprice o con cualquier editor de Mysql también podemos usar la línea de comandos que trae Mysql pero una herramienta grafica facilita mucho la tarea

Para el ejemplo usaremos una tabla alumno y materia la cuales se relación con inscripción.

El diagrama de base de datos es el siguiente:


Como vemos no existen la relación ya que Mysql no tiene integridad referencial aunque las especifiquemos.

El script es:

CREATE DATABASE DbInscripcion

CREATE TABLE Alumno

(

Ci VARCHAR(13) PRIMARY KEY,

Nombre VARCHAR(200),

Direccion VARCHAR(200),

Edad INTEGER

);

CREATE TABLE Materia

(

CodMateria VARCHAR(13) PRIMARY KEY,

NombreMateria VARCHAR(50),

Descripcion VARCHAR(200)

);

CREATE TABLE Inscripcion

(

Ci VARCHAR(13),

CodMateria VARCHAR(13),

FechaInscripcion DATE,

FOREIGN KEY(Ci)REFERENCES Alumno(Ci),

FOREIGN KEY(CodMateria)REFERENCES Materia(CodMateria)

);

 

 

2.- Creamos un proyecto de Windows Form para la conexión con Mysql. Y instalamos las librerías de Mysql para poder usar las librerías para la conexión.


3.- Agregaremos a nuestro proyecto de Visual Studio la librería Mysql.Data como vemos esta librería ya fue agregada a .Net por el instalador

Haciendo click derecho a la carpeta Referencias en el Solution Explorer adicionamos nuestra librería


 

Buscamos la librería System.Data


4.- Insertamos un botón al formulario Windows para probar la conexión a la base de datos. Generamos el evento clic del botón


 

5.- Agregamos las librerías al formulario con using.


6.- Ahora comenzamos a crearnos el Objeto MysqlConnection para verificar si estamos conectados a la base de datos.


 

Hacemos ejecutamos la aplicación y verificamos que realmente estamos conectados.


 

6.- Una vez verificado que la conexión está bien y la cadena de conexión es la correcta creamos el formulario para adicionar datos a la tabla Alumno.


 

7.- Ahora creamos los objetos necesarios para poder interactuar con la base de datos e insertamos los datos hacia la base de datos.


Una vez ejecutada la aplicación agrega los datos con éxito.


 

Y verificamos si realmente ha agregado a la base de datos nuestro nuevo alumno.


Observamos que usar una base de datos Mysql en un proyecto de .Net es realmente fácil y sencillo y no presenta más problemas que los habituales para la conexión a una base de datos, además los objetos para realizar la conexión y la interactividad con la base de datos son parecidos a los habituales de Ado.net.

Urlgrafía.

http://www.conectionstring.org

12 comentarios

  1. Diego said,

    Hola, tengo una duda, no te entiendo muy bien a lo que te refieres con las referencias de MySQL, que no se pueden hacer y todo eso que mencions. Yo tengo una base de datos en Mysql, utilizo la interfaz SQLyog para manejarla, pero no establecí las llaves foráneas al momento de crear las tablas de la base de datos principalmente porque no tenía claro en un principio el uso de éstas.

    Ahora en éste momento estoy tratando de hacer las llaves foráneas pero no he podido.
    El otro problema que tengo es realizo registros en la base de datos a través de un formulario Jframe, todos los campos que digito en el formulario se guardan en los respectivos campos de la tabla, pero me salen unos carácteres extraños en vez de las tildes que le coloco a la información. No se como puedo solucionar ésto. He estado leyendo y he encontrado algo relacionado con UTF8, pero de todas formas no se como manejar ésto desde Java.

    Soy nuevo en ésto de trabajar con aplicaciones conectadas a base de datos y tambien muy novato en Java, aunque por lo que veo tu trabajas con .net, pero no se si de todas formas me puedas ayudar.

    Gracias.

    • Giovanni Vladimir said,

      Hola Diego, el problema es que mysql por ganar en velocidad no incorpora por defecto la integridad referencial osea el uso de llaves foraneas eso lo deja para que el desarrollador las pueda manejar y cuidar (por el hecho de ganar en velocidad). posiblemente usaste la creacion de las tablas por defecto y por eso usaste el motor de almacenamiento MyISAM que no acepta las llaves foraneas.myisam-vs-innodb
      Con resecto al problema de las tildes al momento de crear tu base de datos tienes que decirle que lenguaje para esto queires usar seguramente usaste algun en otro idioma yo uso el latin1_spanish_ci que me acepta las tildes la ñ etc. pero al momento de crear la base de datos tenias que especificar cual era el lenguaje que querias usar.Crear base de datos.
      Espero que te sirva

  2. Los números de 2010 « Blog de Giovanni Callisaya said,

    […] Conexiones .Net Con Mysql octubre, 2010 2 comentários 5 […]

  3. pepe said,

    Hola Giovanni:

    ojala tu me pueda ayuda, necesito pasa una aplicacion que esta en Access2007(altas, bajas, cambios, consultas, reportes) a web (silverlight4+blen4+Access2007+VS2010) y que vario usuario la puedan usar al mismo tiempo. te puedo pasar la aplicacion o si tienes un ejemplo.

    Muchas gracias

    • Giovanni Vladimir said,

      Access no se puede usar para servir a varios usuarios a la ves tendrias que realizar una gestion demasiada buena para controlar, ya que access no es gestor de base de datos solo un archivo de bd y como archivo solo uno a la ves lo puede tener abierto y usarlo, pero como te digo tendrias que usar validadores de que la aplicacion ya esta siendo usada y que esperen antes de hacer algun cambio. es complejo pero se puede, aunque creo que es mejor usar mysql.

  4. Jose said,

    Pero si lo que quiero es generar consulta para un loggeo no para una adicion… que haria?

  5. nandezfox said,

    plop y el InnoDB? como que MySQL no tiene integridad referencial?

  6. Jorge Torselli said,

    HOla fijate que estoy tratando de conectar y generar reportes de una bd en sql server express edition 2008 r2 paero tengo problemas al ejecutar los reportes porque cuando los parametros en el tipo de datos date no me reconoce, la mayoria de estos son procedimientos almacenados en la bdm, y sql server 2008r2 express edition esta en un windows 7 profesional, y cuando me conecto desde otra maquina por medio de la connection string de la aplicacion no puedo visulaizar ningun reporte que tenga el tipo de dato date, que puedo hacer?? alguna referencia?? de antemanno gracias

  7. Jorge Torselli said,

    Perdón se me olvidaba que uso crystal reports para visual studio 2010 con lenguaje de programación visual basic .net y es una winforms jeje perdón

  8. Antonio said,

    Hasta ahora no he encontrado una nueva herramienta genial para trabajar con MySQL – Valentina Studio. Es la edición gratuita puede hacer las cosas más de las muchas herramientas comerciales!
    ¡Muy recomendable comprobarlo. http://www.valentina-db.com/en/valentina-studio-overview

  9. Diëgo Andrés said,

    Hola, tengo una dificultad; tengo una aplicación en tres capas, una de ellas es la conexión y los métodos para MySQL que basicamente es lo que tu haces, el problema es que cuando ejecuto la aplicacion, me sale un mensaje que dice:
    Excepción no controlada del tipo ‘System.Data.SqlClient.SqlException’ en RestauranteDL.dll

    Información adicional: Error de inicio de sesión del usuario ‘root’.

    El usuario, clave, host son los correctos, no se cómo manejar este problema.
    Muchas gracias por tu atención, ojalá me puedas ayudar.

  10. Javier said,

    excelente!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: