J'ai créé cet exemple car je n'ai pas trouvé d'explication simple pour l'utilisation de MySQL 5 avec ObjectDataSources dans ASP.NET 2.0.
Introduction
J'ai créé cet exemple parce que je n'ai pas trouvé d'explication simple pour utiliser MySQL 5 avec ObjectDataSources dans ASP.NET 2.0.
laissez-moi vous dire que je suis vraiment impressionné par MySQL. J'ai pu l'installer facilement sur ma machine Windows XP et le faire fonctionner en une heure environ. Je suis un utilisateur de longue date de MS SQL et j'étais très frustré d'essayer d'utiliser Oracle et Firebird. Je me rends compte que le problème est que je suis gâté par MS SQL Server, mais bon, je suis occupé et j'aime les outils faciles à utiliser :)
si vous débutez avec MySQL et ASP.NET, alors je vous recommande ces étapes :
Allez sur le site Web MySQL, téléchargez et installez « Version actuelle (recommandée) ».
Téléchargez et installez : Administrateur MySQL (pour administrer votre serveur MySQL, le premier téléchargement installe uniquement le serveur).
Téléchargez et installez : Connector/Net 1.0 (vous en avez besoin pour que vos pages ASP.NET communiquent avec votre serveur MySQL).
Vous pouvez également télécharger : MySQL Query Browser – (un client graphique pour travailler avec vos bases de données MySQL et exécuter des requêtes).
Lisez et suivez ce guide : Un guide étape par étape pour utiliser MySQL avec ASP.NET.
Pour installer le code :
Vous devez avoir MySQL 5 opérationnel.
Installez MySQL Connecteur/Net 1.0.
Créez une base de données MySQL 5 nommée Test.
Créez une table dans cette base de données appelée Message :
CREATE TABLE test.message ( Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, Nom VARCHAR(45), Email VARCHAR(45), Message VARCHAR(200), PRIMARY KEY (Entry_ID) ) AUTO_INCREMENT=32 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
Créez ces quatre procédures stockées MySQL dans la base de données Test :
PROCÉDURE `test`.`DeleteMessage`(IN param1 INT)BEGINDelete From test.messageWHERE Entry_ID = param1;END
PROCÉDURE `test`.`InsertMessage`(IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGININSERT INTO message(Nom, Email, Message)VALUES(param1,param2,param3);END
PROCÉDURE `test`.`ShowAll`()BEGINSELECT message.Entry_ID, message.Name, message.Email, message.MessageFROM test.message;END
PROCÉDURE `test`.`UpdateMessage`(IN paramkey INT, IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGINUPDATE messageSET Nom = param1, Email = param2, Message = param3WHERE (message. Entry_ID = clé param);END
Décompressez "MySQL" et configurez IIS pour qu'il pointe vers lui. Assurez-vous de configurer le serveur Web pour utiliser ASP.NET 2.0.
Ouvrez "web.config" et changez la ligne :
pour vous connecter à votre base de données MySQL.
Accédez à la page default.aspx via IIS.
il s'agit de la classe qui utilise Generics pour fournir les données consommées par le contrôle ObjectDataSource :
utilisation de System ; utilisation de System.Collections.Generic ; utilisation de System.Data ; utilisation de MySql.Data.MySqlClient ; utilisation de System.Configuration ; utilisation de System.ComponentModel ;[DataObject(true)]classe statique publique MessagesDB{ chaîne statique privée GetConnectionString() { return ConfigurationManager.ConnectionStrings ["MySQLConnectionString"].ConnectionString; } [DataObjectMethod(DataObjectMethodType.Select)] public static List GetMessages() { MySqlCommand cmd = new MySqlCommand("ShowAll", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure ; cmd.Connection.Open(); MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); Liste MessageItemlist = new List(); while (dr.Read()) { MessageItem MessageItem = new MessageItem(); MessageItem.Entry_ID = Convert.ToInt32(dr["Entry_ID"]); MessageItem.Message = Convert.ToString(dr["Message"]); MessageItem.Name = Convert.ToString(dr["Nom"]); MessageItem.Email = Convert.ToString(dr["Email"]); MessageItemlist.Add(MessageItem); } dr.Close(); renvoie la liste d'éléments de message ; } [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.Connection.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.Connection.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); je reviens; } [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.Connection.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); je reviens; }
la classe ci-dessus utilise la classe « MessageItem » pour transmettre les paramètres vers et depuis le contrôle ObjectDataSource :
using System;public class MessageItem{ int _Entry_ID; chaîne _Message ; chaîne _Name ; chaîne _Email ; public MessageItem() { } public int Entry_ID { get { return _Entry_ID ; } set { _Entry_ID = valeur ; } } chaîne publique Message { get { return _Message; } set { _Message = valeur ; } } chaîne publique Nom { get { return _Name; } set { _Nom = valeur ; } } chaîne publique Email { get { return _Email; } set { _Email = valeur ; } }}
il s'agit du fichier .aspx qui contient le contrôle ObjectDataSource ainsi qu'un GridView pour éditer les données et un DetailsView pour insérer un enregistrement :