M y S Q L e t . N E T Date de publication : 01/10/2004 , Date de mise a jour :
M y S Q L e t . N E T Date de publication : 01/10/2004 , Date de mise a jour : 01/10/2004 Par LEBRUN Thomas MySQL, la base de données la plus connue du monde Open Source, attire les développeurs par bien des égards: ses possibilités, ses performances, son prix... SGBDR préféré des développeurs PHP, voyons comment les développeurs .NET peuvent également l'utiliser dans leurs projets (professionnels ou personnels). 1. Introduction 2. Installation du Provider 3. Les objets MySQL 4. Codage 5. Code Complet 6. MySQL via Internet 7. Conclusion 8. Téléchargement 1. Introduction MySQL n'est pas supporté nativement dans l'environnement .NET. Mais, pour remédier à ce problème, vous pouvez télécharger différents providers qui vous permettront d'intégrer MySQL dans votre IDE. Je vous recommande le provider de MySQL Connector (anciènnement connut sous le nom ByteFx), que j'ai utilisé pour la rédaction de cet article, et que vous pourrez télécharger gratuitement à l'adresse suivante:http://dev.mysql.com/downloads/connector/net/1.0.html. 2. Installation du Provider Après avoir téléchargé et décompressé le fichier ZIP, lancer l'installation (très rapide) en double-cliquant sur le fichier Setup.exe. Modifiez, si besoin est, l'emplacement des fichiers à installer pour terminer l'installation. A priori, rien n'a changer: pas de nouvelle icône sur le bureau, et le menu démarrer ne comporte qu'un nouveau dossier, qui ne contient lui-même que deux raccourcis vers des documentations. Lancez donc votre environnement de développement (nous partirons du principe, pour cet article, que vous travaillez avec Visual Studio 2003) et choisissez de réaliser un nouveau projet (Mode Console ou WinForms, peu importe). Une fois que tout est ouvert, dans l'explorateur de solution, faites un clic droit sur "Références" et choisissez "Ajouter une référence". Si l'installation du provider s'est bien passée, vous devriez voir deux nouvelles références possibles à ajouter dans vos projets. La capture d'écran ci-jointe vous montrera lesquelles: Sélectionnez alors ByteFx.MySqlClent.dll puis cliquez sur OK pour ajouter la référence à voter projet en cours. Pensez ensuite à faire le "using" dans votre projet: Mis en place du using using ByteFX.Data.MySqlClient; 3. Les objets MySQL Si vous avez déjà travaillé avec une base de données, sous .NET, telle que SQL Server, vous serez agréablement surpris de voir que les objets sont les mêmes. En effet, seul le préfixe des objets change: à la place de SqlCommand, nous avons dorénavant MySqlCommand. Voici un tableau récapitulatif des principaux objets: Objet Utilité MySqlCommand Représente une requête SQL à exécuter MySqlConnection Représente une connexion à un serveur MySQL MySqlDataAdapter Représente un ensemble de commandes de données utilisées pour remplir un dataset/mettre à jour une base de donnée MySQL MySqlDbType (Enumération) Spécifie le type de données d'un champs, d'une propriété, à utiliser avec MySqlParameter MySqlException Représente l'exception qui est levée lorsque MySQL retourne une erreur MySqlParameter Représente le paramètre pour une commande MySQL Cette liste, non exhaustive, vous montre les principaux objets que vous pourriez avoir à manipuler avec MySQL. 4. Codage Après avoir vu la théorie, voyons un peu le côté pratique: la partie codage ! Le développement d'applications avec MySQL étant très similaire au développement avec SQL Server, je ne vais pas m'attarder trop longtemps sur cette partie: en effet tout ce que je pourrai vous dire ici ne serait qu'un simple copier/coller d'un développement sous SQL Server, donc aucun intérêt.... Je vais donc vous montrer un rapide exemple: On commence par définir une chaîne de connexion au serveur MySQL: Chaîne de connexion string ConnnectionStr = "Database=BaseDeDonnees;Data Source=localhost;User Id=root;Password=password"; Ensuite, on déclare un objet MySqlConnecion, auquel on associe cette chaîne de connexion: Déclaration de la connexion MySQL private MySqlConnection Connection = new MySqlConnection(); Connection.ConnectionString = ConnnectionStr; // Ici, on ouvre la connexion au serveur Connection.Open(); Pour exécuter une simple requête SELECT, rien de plus simple: utilisez l'objet MySqlDataAdapter auquel vous associerez la requête SELECT à la propriété SelectCommand: Exécution d'une requête SELECT private MySqlDataAdapter MyAdapter = new MySqlDataAdapter(); // On définit la requête SELECT à exécuter string MySQLCmd = "SELECT * FROM LaTable"; // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection); Si vous avez un Dataset, vous pouvez tout à fait utiliser la méthode Fill(), du MySqlDataAdapter, pour le remplir: Remplissage du Dataset private DataSet ds = new DataSet(); // On remplit le dataset avec le résultat de la commande SELECT MyAdapter.Fill(ds); Ensuite, libre à vous de travailler avec le Dataset, de la même façon que lors de vos autres développements. Pour fermer la connexion au serveur MySQL, rien de plus simple, il vous suffit d'appeler la méthode Close(), de l'objet MySqlConnection: Fermeture de la connexion // On ferme la connexion le plus tôt possible Connection.Close(); 5. Code Complet Je vous mets ici une copie du code que j'ai utilisé pour mes tests: vous pourrez tout de même télécharger la solution complête pour Visual Studio 2003 à la fin de cet article. Code source complet using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using ByteFX.Data.MySqlClient; namespace TestMySQL { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox tbhote; private System.Windows.Forms.TextBox tblogin; private System.Windows.Forms.Button btconnect; private System.Windows.Forms.TextBox tbbase; private System.Windows.Forms.DataGrid dataGrid1; private System.Windows.Forms.TextBox tbpwd; private System.ComponentModel.Container components = null; private MySqlConnection Connection = new MySqlConnection(); private MySqlDataAdapter MyAdapter = new MySqlDataAdapter(); private DataSet ds = new DataSet(); public Form1() { // // Requis pour la prise en charge du Concepteur Windows Forms // InitializeComponent(); // // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent // } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Code généré par le Concepteur Windows Form private void InitializeComponent() { this.tbhote = new System.Windows.Forms.TextBox(); this.tblogin = new System.Windows.Forms.TextBox(); this.tbpwd = new System.Windows.Forms.TextBox(); this.btconnect = new System.Windows.Forms.Button(); this.tbbase = new System.Windows.Forms.TextBox(); this.dataGrid1 = new System.Windows.Forms.DataGrid(); ((System.ComponentModel.ISupportInitialize) (this.dataGrid1)).BeginInit(); this.SuspendLayout(); // // tbhote // this.tbhote.Location = new System.Drawing.Point(24, 16); this.tbhote.Name = "tbhote"; this.tbhote.TabIndex = 0; this.tbhote.Text = "localhost"; // // tblogin // this.tblogin.Location = new System.Drawing.Point(256, 16); this.tblogin.Name = "tblogin"; this.tblogin.TabIndex = 1; this.tblogin.Text = "login"; // // tbpwd // this.tbpwd.Location = new System.Drawing.Point(376, 16); this.tbpwd.Name = "tbpwd"; this.tbpwd.PasswordChar = '*'; this.tbpwd.TabIndex = 2; this.tbpwd.Text = "password"; // // btconnect // this.btconnect.Location = new System.Drawing.Point(496, 16); this.btconnect.Name = "btconnect"; this.btconnect.TabIndex = 3; this.btconnect.Text = "Connexion"; this.btconnect.Click += new System.EventHandler(this.btconnect_Click); // // tbbase // this.tbbase.Location = new System.Drawing.Point(144, 16); this.tbbase.Name = "tbbase"; this.tbbase.TabIndex = 4; this.tbbase.Text = "base"; // // dataGrid1 // this.dataGrid1.DataMember = ""; this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText; this.dataGrid1.Location = new System.Drawing.Point(24, 64); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.Size = new System.Drawing.Size(544, 184); this.dataGrid1.TabIndex = 5; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(600, 266); this.Controls.Add(this.dataGrid1); this.Controls.Add(this.tbbase); this.Controls.Add(this.btconnect); this.Controls.Add(this.tbpwd); this.Controls.Add(this.tblogin); this.Controls.Add(this.tbhote); this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "MySQL et .NET"; ((System.ComponentModel.ISupportInitialize) (this.dataGrid1)).EndInit(); this.ResumeLayout(false); } #endregion [STAThread] static void Main() { Application.Run(new Form1()); } private void btconnect_Click(object sender, System.EventArgs e) { string ConnnectionStr = String.Empty; if ( (tbhote.Text.Length == 0) || (tbbase.Text.Length == 0) || (tblogin.Text.Length == 0) ) { MessageBox.Show("Erreur, les champs Hôte, Base et Login doivent être remplis", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // On définit la chaine de connexion ConnnectionStr = "Database=" + tbbase.Text + ";Data Source=" + tbhote.Text + ";User Id= " + tblogin.Text + ";Password=" + tbpwd.Text; } Connection.ConnectionString = ConnnectionStr; try { // On ouvre la connexion Connection.Open(); // On définit la requête SELECT à exécuter string MySQLCmd = "SELECT * FROM phpbb_users"; // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, Connection); // On remplit le dataset avec le résultat de la commande SELECT MyAdapter.Fill(ds); // On affiche le datagrid dataGrid1.DataSource = ds.Tables[0]; dataGrid1.Refresh(); // On ferme la connexion le plus tôt possible Connection.Close(); } catch(MySqlException Ex) { MessageBox.Show("Erreur SQL:\n" + Ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } 6. MySQL via Internet Beaucoup d'entre vous, après avoir lu cet article, auront certainement cette idée: "Tiens, pourquoi je n'essayerais pas de joindre la base MySQL de mon site perso ?" En effet, rien de tel que d'essayer pour apprendre ;) Mais pour pouvoir faire ceci, vous devez prendre en considération plusieurs choses: Pour joindre l'hôte MySQL de votre serveur, il faut que votre hébergeur ait ouvert le port de MySQL (par défaut 3306) à l'extérieur : sur la plupart des hébergeurs, cela n'est pas fait pour des raisons de sécurité, donc à moins que vous ne possédiez votre propre serveur dédié, il vous sera impossible de réaliser votre idée Si vous savez que le port est ouvert mais que vous n'arrivez pas à joindre le serveur MySQL, essayer de passer par l'IP du serveur pour voir s'il ne s'agit pas d'un problème de DNS Joindre un site, par Internet, c'est un peu comme utiliser un WebService : cela bloque l'affichage. Pour éviter cela, penser à utiliser des Threads. 7. Conclusion Comme vous avez certainement pu le remarquer tout au long de cet article, le développement pour MySQL ne diffère pas énormément du développement sous SQL Server: méthodes identiques, propriétés identiques, etc.... Voilà qui permet aux jeunes développeurs de pouvoir commencer uploads/S4/ mysql-et.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 06, 2021
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.1631MB