MySQL desde .NET
[Acceder a bases de datos MySQL desde VB.NET]

Fecha: 30/Nov/2004 (22/11/2004)
Autor: Javier de la Rosa ([email protected])

 


Introducción.

Este articulo se refiere a cómo conectar nuestras aplicaciones .NET (versión 2003) con bases de datos, remotas o no, servidas a través de MySQL. Para poder realizar esta conexión se hace uso del driver MySQLDriverCS, herramienta gratuita y distribuida bajo licencia GPL.

Asimismo, muestra un pequeño código de ejemplo que servirá al lector para continuar investigando en esta herramienta versátil y práctica, que hace fácil el trabajo de aquellos programadores habituados a PHP/MySQL que decidan aprender un poco sobre la plataforma .NET.

Advertir que el presente texto no contempla los aspectos técnicos ni sus explicaciones, sino una forma rápida y sencilla de atacar a una base de datos MySQL.

Código.

A continuación sigue el código, realizado para Visual Basic .NET pero fácilmente adaptable a C# siguiendo las ayudas que trae el driver:

Option Explicit On
Option Strict On
Option Compare Text

'Una vez añadida la referencia a MySQLDriverCS.dll
'añadimos la clásula Imports correspondiente
Imports MySQLDriverCS

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region "Código generado por el Diseñador[...]"

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'La variable bConexionExitosa nos permitirá finalizar el 
        'programa si la conexión falla
        Dim bConexionExitosa As Boolean = True

        'Creamos un objeto de tipo Connection y configuramos los parámetros de la conexión
        Dim DBCon As MySQLConnection
        'Los parámetros de la sobrecarga con más parámetros son:
        '1. Dirección IP o nombre de la máquina con el servidor de MySQLS
        '2. Nombre de la base de datos
        '3. Nombre de usuario con acceso a la base de datos señalada anteriormente
        '4. Contraseña para el nombre de usuario citado
        '5. Puerto por el que se acede al servidor. Típicamente 3306
        DBCon = New MySQLConnection(New MySQLConnectionString("192.168.0.1", "net", "root", "xxxxxxxxxx", 3306).AsString)

        Try
            'Abrimos la conexión y comprobamos que no hay error
            DBCon.Open()
        Catch ex As MySQLException
            'Si hubiese error en la conexión mostramos el texto de la descripción
            MsgBox(ex.Message.ToString)
            bConexionExitosa = False
        End Try

        'Si no hay ningún problema continuamos
        If bConexionExitosa Then

            'EJEMPLO 1: Uso de la consulta predefinida MySQLSelectCommand, que ejecuta
            'una consulta SELECT

            'Definimos dos arrays de String, f y t, que contendrán, respectivamente, los
            'campos (fields) que la consulta devolverá y la tablas sobre las que se ejecutará.
            'Las cláusulas WHERE y ORDER BY no las utilizaremos, de ahí los Nothing
            Dim f() As String = {"id", "nombre"}
            Dim t() As String = {"prueba"}

            'Ejecutamos la consulta mediante el comando MySQLSelectCommand
            Dim dt As DataTable = New MySQLSelectCommand(DBCon, f, t, Nothing, Nothing, Nothing).Table
            'Si la consulta produjo algún resultado los mostraremos mediante un MsgBox
            'La clase DataTable contiene una colección accesible mediante .Rows
            'en la que se almacenan los resultados como variables DataRow
            If (dt.Rows.Count <> 0) Then
                'Creamos una variable DataRow para contener los elementos resultantes
                Dim drow As DataRow
                'Al tratarse de una colección podemos recorrerla mediante For Each...In
                For Each drow In dt.Rows
                    'DataRow tiene un método por defecto llamado .Item(...) que permite
                    'devolver el elemento indicado por el índice o el nombre de la columna
                    MsgBox(drow("nombre"))
                Next
            End If


            'EJEMPLO 2: Uso de una consulta genérica en SQL utilizando el método
            'MySQLCommand del Namespace MySQLDriverCS

            'Instanciamos un objeto de la clase MySQLCommand utilizando el constructor por defecto
            Dim sql As MySQLCommand = New MySQLCommand
            'Establecemos el tipo Connection que usará para realizar la petición
            sql.Connection = DBCon
            'Escribimos la consulta que deseamos en T-SQL. Nuestro ejemplo buscará todos
            'los nombres cuya segunda letra sea 'a' y penúltima 'e'
            sql.CommandText = "SELECT * FROM `prueba` WHERE `nombre` LIKE '_a%e_';"
            'Como el comando no es almacenado ni vinculado a un tabla elegimos el tipo .Text
            sql.CommandType = CommandType.Text

            'Creamos un lector de datos (IDataReader) y lo inicializamos
            'con el lector del objeto MySQLCommand
            Dim dr As System.Data.IDataReader
            dr = sql.ExecuteReader()
            'Mientras haya datos para leer los mostramos
            While dr.Read()
                'Al igual de los objetos DataRow, la clase IDataReader también tiene
                'un método por defecto .Item que funciona exactamente igual
                MsgBox(dr("nombre"))
            End While

            'Cerramos la conexión con el servidor
            DBCon.Close()
        End If
    End Sub
End Class

Sin más, espero que resulte de utilidad.

 


ir al índice

Fichero con el código de ejemplo: versae_MySQLNET.zip - Tamaño 5.82 KB