MySQL desde .NET Fecha: 30/Nov/2004 (22/11/2004)
|
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 ClassSin más, espero que resulte de utilidad.
Fichero con el código de ejemplo: versae_MySQLNET.zip - Tamaño 5.82 KB