Creé este ejemplo porque no pude encontrar una explicación simple para usar MySQL 5 con ObjectDataSources en ASP.NET 2.0.
Introducción
Creé este ejemplo porque no pude encontrar una explicación simple para usar MySQL 5 con ObjectDataSources en ASP.NET 2.0.
Déjame decirte que estoy realmente impresionado con MySQL. Pude instalarlo fácilmente en mi máquina con Windows XP y ponerlo en funcionamiento en aproximadamente una hora. Soy usuario de MS SQL desde hace mucho tiempo y me sentí muy frustrado al intentar utilizar Oracle y Firebird. Me doy cuenta de que el problema es que estoy arruinado por MS SQL Server, pero bueno, estoy ocupado y me gustan las herramientas fáciles de usar :)
si estás comenzando con MySQL y ASP.NET, te recomiendo estos pasos:
Ir Vaya al sitio web de MySQL, descargue e instale la “Versión actual (recomendada)”.
Descargue e instale: MySQL Administrator (para administrar su servidor MySQL, la primera descarga simplemente instala solo el servidor).
Descargue e instale: Connector/Net 1.0 (lo necesita para que sus páginas ASP.NET se comuniquen con su servidor MySQL).
También puede descargar: MySQL Query Browser – (un cliente gráfico para trabajar con sus bases de datos MySQL y ejecutar consultas).
Lea y siga esta guía: Una guía paso a paso para usar MySQL con ASP.NET.
Para instalar el código:
Debes tener MySQL 5 funcionando.
Instale el conector MySQL/Net 1.0.
Cree una base de datos MySQL 5 llamada Prueba.
Crea una tabla en esa base de datos llamada Mensaje:
CREAR TABLA test.message ( Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, Nombre VARCHAR(45), Correo electrónico VARCHAR(45), Mensaje VARCHAR(200), PRIMARY KEY (Entry_ID) ) AUTO_INCREMENT=32 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
Cree estos cuatro procedimientos almacenados MySQL en la base de datos de prueba:
PROCEDIMIENTO `prueba`.`DeleteMessage`(IN param1 INT)BEGINDeliminar de test.messageWHERE Entry_ID = param1;END
PROCEDIMIENTO `prueba`.`InsertMessage`(EN param1 VARCHAR(50), EN param2 VARCHAR(50), EN param3 VARCHAR(200))BEGININSERT INTO mensaje(Nombre, Correo electrónico, Mensaje)VALUES(param1,param2,param3);END
PROCEDIMIENTO `prueba`.`MostrarTodo`()BEGINSELECT mensaje.Entrada_ID, mensaje.Nombre, mensaje.Correo electrónico, mensaje.MensajeFROM prueba.mensaje;END
PROCEDIMIENTO `prueba`.`UpdateMessage`(IN paramkey INT, IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGINUPDATE messageSET Nombre = param1, Correo electrónico = param2, Mensaje = param3WHERE (message. Entry_ID = claveparam);END
Descomprime "MySQL" y configura IIS para que apunte a él. Asegúrese de configurar el servidor web para utilizar ASP.NET 2.0.
Abra "web.config" y cambie la línea:
para conectarse a su base de datos MySQL.
Vaya a la página default.aspx a través de IIS.
esta es la clase que usa Generics para suministrar los datos que consume el control ObjectDataSource:
usando System;usando System.Collections.Generic;usando System.Data;usando MySql.Data.MySqlClient;usando System.Configuration;usando System.ComponentModel ;[DataObject(true)]clase estática pública MessagesDB{ cadena estática privada GetConnectionString() { return ConfigurationManager.ConnectionStrings ["MySQLConnectionString"].ConnectionString; } [DataObjectMethod(DataObjectMethodType.Select)] Lista pública estática GetMessages() { MySqlCommand cmd = new MySqlCommand("ShowAll", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Conexión.Open(); MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); Lista Lista de elementos de mensajes = nueva lista(); while (dr.Read()) { MessageItem MessageItem = nuevo MessageItem(); MessageItem.Entry_ID = Convert.ToInt32(dr["Entry_ID"]); MessageItem.Message = Convert.ToString(dr["Mensaje"]); MessageItem.Name = Convert.ToString(dr["Nombre"]); MessageItem.Email = Convert.ToString(dr["Correo electrónico"]); MessageItemlist.Add(MessageItem); } dr.Cerrar(); devolver lista de elementos de mensaje; } [DataObjectMethod(DataObjectMethodType.Insert)] public static void InsertMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("InsertMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name)); cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email)); cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message)); cmd.Conexión.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } [DataObjectMethod(DataObjectMethodType.Update)] public static int UpdateMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("UpdateMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("paramkey", MessageItem.Entry_ID)); cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name)); cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email)); cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message)); cmd.Conexión.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); devolver yo; } [DataObjectMethod(DataObjectMethodType.Delete)] public static int DeleteMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("DeleteMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Entry_ID)); cmd.Conexión.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); devolver yo; }
la clase anterior usa la clase "MessageItem" para pasar los parámetros hacia y desde el control ObjectDataSource:
usando System;public class MessageItem{ int _Entry_ID; cadena _Mensaje; cadena _Nombre; cadena _Correo electrónico; elemento de mensaje público() { } public int Entry_ID { get { return _Entry_ID; } establecer { _Entry_ID = valor; } } mensaje de cadena pública { get { return _Message; } establecer { _Mensaje = valor; } } cadena pública Nombre { get { return _Name; } establecer { _Nombre = valor; } } cadena pública Correo electrónico { get { return _Email; } establecer { _Email = valor; } }}
este es el archivo .aspx que contiene el control ObjectDataSource así como un GridView para editar datos y un DetailsView para insertar un registro: