lunes, 13 de septiembre de 2010

Conectarse a MySql desde .NET

Bueno, ahora voy a mostrarles como conectarse a una base de datos de MySql usando Visual Studio 2005, usando VB.Net y C#. En fin, lo que necesitamos primeramente es el conector para MySql que es un proveedor de datos hecho por terceros (no lo hizo la gente de microsoft). En fin, vamos a esta web: http://dev.mysql.com/downloads/connector/net/5.0.html, en este caso bajare el conector en su version 5.0.9. Bueno, una vez descargado, nos dirigimos al directorio de nuestra descargar, y ejecutamos mysql-connector-net-5.0.9.exe. Bueno, tal vez algunos descarguen una version pasada, o mas reciente pero la forma de hacer las cosas no cambiara, ya que los proveedores de base de datos que quieren trabajar con .NET deben obedecer la implementacion de interfaces de .NET, todo esto para evitar problemas. Les explico esto, .NET tiene proveedores de acceso a datos para SqlServer, para conexiones ODBC, OLEDB e incluso para Oracle, para MySql, tenemos la que nos provee MySql, que ya descargamos. Ahora todos estos proveedores tendran las siguientes clases: Connection, Command, DataReader, DataAdapter que son las principales. En fin, no se llamaran Connection simplemente, mas bien comenzaran por el nombre del proveedor, SqlConnection, SqlCommand, etc para Sql Server, MySqlConnection, MySqlCommand, etc para MySql que es lo que ahora nos interesa. Los metodos que tengan seran los mismos, habiendo exepciones que dependen del proveedor, pero la idea es la misma.


Una vez esto, pasamos a lo practico, ejecutamos el archivo .exe que descargamos, si desconfian, en la pagina web de mysql tienen la suma hash del archivo, asi que ustedes pueden comprobarlo. Una vez instalado vamos a Visual Studio y creamos un nuevo proyecto.
Para C#

 Para VB.net
Una vez esto debemos agregar la referencia a el conector de mysql que acabamos de instalar, para eso vamos a nuestro explorador de soluciones, y en referencias, hacemos click derecho y Agregar Referencia o Add Reference para Visual Studio en ingles. 
Para C#:


Para VB.net
Una vez hecho eso, vamos a la pestaña Examinar o Browse y nos vamos al directorio donde instalamos nuestro conector, por defecto se encuentra en: C:\Archivos de programa\MySQL\MySQL Connector Net 5.0.9\Binaries\.NET 2.0, en este caso estoy buscando la dll, bueno una vez la encontremos la seleccionamos y aceptanos. Bueno lo que haremos ahora es arrastrar un DataGridView a nuestro formulario, y un boton. (OJO!!, el control datagridview esta en la caja de herramientas en la pestaña datos. El objetivo de esto es que cuando presionemos el boton nos despliegue en el DataGridView los datos de una tabla en nuestra base de datos.
Control DataGridView:
 Ahora vamos al codigo de nuestro formulario presionando F7, bueno esto es mas comodo para mí, pero ustedes pueden ver la forma de ir al codigo, dando doble click al boton, por el explorador de soluciones, etc. Bueno, una vez en el código, en la parte de importaciones using en C# y imports en VB.net, importamos las librerias de nuestro conector, y la libreria genérica para acceso a datos, es decir System.Data, donde se encuentrar las clases DataTable, DataRow, DataSet, etc que son independientes del origen de datos que usemos.
En C# sería:
public DataTable DevuelveProductos()
{
 MySqlConnection conn = new MySqlConnection(cadenaConexion);
 string sql = "select * from productos";
 MySqlCommand cmd = new MySqlCommand(sql, conn);
 DataTable tblProdcutos = null;
 try
 {
  // Abrimos la conexion con nuestro servidor
  conn.Open();
  // Ejecutamos nuestra consulta de seleccion
  MySqlDataReader reader = cmd.ExecuteReader();
  tblProdcutos = new DataTable();
  // Cargamos la informacion que nos devolvio la
  // base de datos en un DataTable
  tblProdcutos.Load(reader);
  // Una buena practica es cerrar el DataReader, ya que
  // si no lo cerramos, no podemos usar esta conexion en
  // este metodo
  reader.Close();
 }
 catch (Exception ex)
 {
  MessageBox.Show("Error en tiempo de ejecucion");
 }
 finally
 {
  // De igual modo, siempre es bueno cerrar
  // la conexion este o no este abierta.
  conn.Close();
 }
 return tblProdcutos;
}
En VB.net sería:

Public Function DevuelveProductos() As DataTable
 Dim conn As New MySqlConnection(cadenaConexion)
 Dim sql As String = "select * from productos"
 Dim cmd As New MySqlCommand(sql, conn)
 Dim tblProductos As DataTable = Nothing
 Try
  conn.Open()
  Dim reader As MySqlDataReader
  reader = cmd.ExecuteReader()
  tblProductos = New DataTable()
  tblProductos.Load(reader)
  reader.Close()
 Catch ex As Exception
  MessageBox.Show("Error en tiempo de ejecucion")
 Finally
  conn.Close()
 End Try
 Return tblProductos
End Function

Ahora vamos a nuestro formulario, y le damos doble click a nuestro boton, para ir al evento "Click de nuestro boton" es decir, lo que pongamos en este método, es lo que pasará cuando presionemos el boton. Ahora lo unico que tenemos que hacer es poner dentro del método que controla este evento es lo siguiente:"dataGridView1.DataSource = DevuelveProductos();" dejando el codigo así:
En C# sería:
private void button1_Click(object sender, EventArgs e)
{
     dataGridView1.DataSource = DevuelveProductos();            
}

En VB.net sería:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGridView1.DataSource = DevuelveProductos()
End Sub

Bueno, como el objetivo de este tutorial era el de sólo mostrar, como conectarse a un base de datos en MySql, creo q eso es, todo, pero, en caso que ustedes quieran ejecutar una consulta de insercion, modificacion o eliminacion, tendriamos un codigo como esto:
En C# sería:
public void EjecutarDML()
{
 MySqlConnection conn = new MySqlConnection("");
 // Consulta de insercion, modificacion o eliminacion
 string sql = "";
 MySqlCommand cmd = new MySqlCommand(sql, conn);
 try
 {
  conn.Open();
  // Ejecutar consulta de ins, mod o eli
  int numeroFilasAfectadas;
  numeroFilasAfectadas = cmd.ExecuteNonQuery();
 }
 catch (Exception ex)
 {
  //Error
 }
 finally { conn.Close(); }
}
En VB.net sería:
Public Sub EjecutarDML()
 Dim conn As New MySqlConnection("")
 Dim sql As String = "consulta de adi, modi, eli"
 Dim cmd As New MySqlCommand(sql, conn)
 Try
  conn.Open()
  Dim numeroFilasAfectadas As Integer
  numeroFilasAfectadas = cmd.ExecuteNonQuery()
 Catch ex As Exception
  ' error!!
 Finally
  conn.Close()
 End Try
End Sub


Bueno, ahora si creo que esto es todo. Este pequeño tuto va dedicado para mis amigos de la Comunidad Portal Hacker.

No hay comentarios:

Publicar un comentario