DATA-Concept

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
Accueil Accueil Pour les développeurs MySql et ASP.NET Partie 1

MySql et ASP.NET Partie 1

Imprimer
Note des utilisateurs: / 0
MauvaisTrès bien 

Utilisation de MySQL dans une application ASP.NET

 

Cliquez sur l'icône pour obtenir la version pdf Version pdf

 

Lors d’un développement d’une application Internet, nous sommes souvent tentés d’utiliser SQL Server ou Access.

SQL Server Express étant très bien géré par Visual Studio et pour cause puisque c’est un produit Microsoft, il est très facile de l’intégrer dans nos applications ASP.NET.
Malheureusement lors du déploiement de l’application il n’est déjà pas facile de trouver un hébergeur proposant la plateforme Windows, et encore moins la base de données de Microsoft à un prix abordable.
Ce qui n’est pas sans poser de problème pour nos clients TPE qui ne souhaitent pas investir dans un hébergement sur serveur dédié avec des coûts souvent prohibitifs pour leur budget Web.
Ainsi, nombre d’entre nous utilisons Access comme base de donnée sur le serveur, d’autant plus que c’est un produit facile à déployer et bien connu de tous les développeurs sous plateforme Microsoft.
Même si Access fournit bon nombre de facilités pour gérer les données, ce n’est pas un moteur client serveur, ce qui peut engendrer des difficultés si les connexions simultanées sont nombreuses.

Pourtant il existe une alternative que j’ai utilisée lors d’un récent projet et qui tout en étant gratuite apporte des prestations en terme de fonctionnalités et de rapidité proches d’une solution 100% Microsoft.
En effet lors de la commande d’un pack hébergement, le fournisseur offre presque systématiquement une ou plusieurs bases de données MySQL.

Depuis la version 2 du Framework il est possible de se connecter à MySQL par l’intermédiaire d’ODBC avec le pilote fourni par MySQL.
ODBC étant la connexion la plus générique qu’il soit et la plus ancienne elle ne permet pas d’utiliser les spécificités offertes par le moteur de base de données. Elle n’est pas non plus très efficace car elle introduit une couche supplémentaire lors de l’accès aux données.

Heureusement pour nous, les développeurs de MySQL ont créés un connecteur .NET.
Comme ils disent chez Microsoft « c’est de l’interopérabilité ! »

Vous trouverez le lien vers le téléchargement sur cette page http://dev.mysql.com/downloads/connector/net/
Qui est au moment où j’écris ces lignes en version 6.2.2 (29/03/2010)
L’avantage de ce connecteur est qu’il est géré en code managé en mode ADO.NET.

Le but de cet article est de vous faire part de mon retour d’expérience sur l’utilisation de MySQL avec le Connector.net.
Je n’essaye pas d’être exhaustif, mais vous permettre de mettre le pied à l’étrier pour débuter avec cette technologie et vous éviter certainement plusieurs heures googleisantes pour trouver la bonne information.

Comme il faut un début à tout, commençons par l’installation.
Je vous ferai grâce de la manip du téléchargement et du lancement du Setup.
Une fois installé vous trouvez dans le menu démarrer l’arborescence suivante :
Menu MySql

Je vous conseille vivement de jeter un œil à la documentation qui est très bien faite et propose de nombreux exemples pertinents.
Il vous faut bien entendu installer MySQL sur votre poste de développement, pour cela en cherchant un peu sur le Web vous trouverez plusieurs solutions, personnellement j’utilise EazyPHP qui est un outil bien connu des développeurs PHP.

Une fois les prés requis installés entrons dans le vif du sujet.


Même s’il est possible d’utiliser Visual Web Developer Express, vous ne bénéficierez pas du mode design, car dans cette version les providers de base de données sont limités à ceux fournis en natif, d’autre part le produit n’accepte pas les plug-ins.

Personnellement j’utilise Visual Studio 2005 sans problème.

Ah oui, j’oubliais, étant un vieux programmeur VB, les exemples seront fournis en VB NET.
Donnez un nom à votre projet, par exemple WebSiteMySQL (original non ?).
Je suppose que vous connaissez déjà un peu le développement en ASP NET
(sinon vous pouvez vous référer à l’article suivant : Mes premiers pas en ASP NET)

Projet ASPNET Faîtes un click droit sur la racine du projet, puis cliquez sur Ajouter une référence
Dans la liste des références .NET vous allez trouver :

mysqldata

Sélectionnez la ligne MySqlData et cliquez sur OK


Dans la boîte à outils


Voilà vous êtes prêts à utiliser MySQL.

Si vous utilisez EasyPHP n’oubliez pas de le lancer.

Créez une base de données avec phpMyAdmin (référez vous à l’aide MySql ou EasyPHP, d’ailleurs vous trouverez de très bon tutoriaux sur le Web pour gérer MySQL car ceci n’est pas le but de cet article)

Créez la table clients

CLI_ID INT Auto incrémenté et c’est la clé !
CLI_NOM VARCHAR 35
CLI_CREATION DATE Date de création du client
CLI_VALIDE TINYINT (1) Servira de booléen

Saisissez quelques enregistrements pour faire vos tests.

Nous allons créer une DataSource à l'aide de l'assistant.
Comme vous pourrez le constater, la boîte à outils ne propose pas de DataSource spécifique à MySql.
Nous allons utiliser une SqlDataSource, qui après quelques modifications va parfaitement convenir.

Dans Visual Studio :

Ouvrez la boîte à outils et faites glissez sur la page une source de données de type SqlDataSource

Sélection de la DataSource dans la boîte à outils

Configurer la source de données
Cliquez sur la flèche (dites smart tag si vous voulez être branché)
Puis sur le lien Configurer la base de données.

Dans l’assistant, cliquez sur nouvelle connexion, puis sur le bouton Modifier pour sélectionner MySql Database
Asistant DataSource

Vous remarquerez que le fournisseur de données est bien reconnu par le Framework.
Une fois que vous avez cliqué sur OK, une nouvelle fenêtre s’ouvre pour vous demander les caractéristiques de votre connexion
Nouvelle connexion

Si vous utilisez EasyPHP votre connexion devrait ressembler à la copie d’écran ci-dessus. Pour vérifier votre saisie, cliquez sur tester la connexion.
Une fois revenu à l’assistant, cliquez sur OK
Dans la nouvelle page
Laissez la case cochée pour enregistrer la connexion dans le fichier Web.Config

Enregistrer la connexion

Dans la fenêtre suivante, sélectionnez les champs à afficher, puis cliquez sur Options avancés afin de créer également les requêtes Insert, Update et Delete.
Configurer la requête

Enfin sur la dernière page de l’assistant, cliquez sur tester la requête pour voir si tout c’est bien passé.

Je ne sais pas ce que ça donne chez vous, mais chez moi ça donne ça :
Message d'ereur

Voilà les ennuis commencent. !
En fait la requête test ne fonctionne pas parce que VISUAL STUDIO (tout comme Access) entoure les champs de crochets afin d’éviter certaines erreurs (Champs avec espace, utilisation de mots clés comme noms de champs, enfin tout ce qui est déconseillé de faire.
Cliquez sur Terminer, puis ouvrez la source de votre page (pas le code source, la source XHTML !)

Votre source de données devrait se présenter comme ci-dessous

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:basetestConnectionString %>"
DeleteCommand="DELETE FROM [clients] WHERE [CLI_ID] = ?" InsertCommand="INSERT INTO [clients] ([CLI_ID], [CLI_NOM], [CLI_CREATION], [CLI_VALIDE]) VALUES (?, ?, ?, ?)"
ProviderName="<%$ ConnectionStrings:basetestConnectionString.ProviderName %>"
SelectCommand="SELECT [CLI_ID], [CLI_NOM], [CLI_CREATION], [CLI_VALIDE] FROM [clients]"
UpdateCommand="UPDATE [clients] SET [CLI_NOM] = ?, [CLI_CREATION] = ?, [CLI_VALIDE] = ? WHERE [CLI_ID] = ?">
<DeleteParameters>
<asp:Parameter Name="CLI_ID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="CLI_NOM" Type="String" />
<asp:Parameter Name="CLI_CREATION" Type="DateTime" />
<asp:Parameter Name="CLI_VALIDE" Type="Object" />
<asp:Parameter Name="CLI_ID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="CLI_ID" Type="Int32" />
<asp:Parameter Name="CLI_NOM" Type="String" />
<asp:Parameter Name="CLI_CREATION" Type="DateTime" />
<asp:Parameter Name="CLI_VALIDE" Type="Object" />
</InsertParameters>
</asp:SqlDataSource>

Pour commencer, enlevez tous les crochets ([ et ])
Vous remarquerez également que le Type INT(1) pour le champ CLI_VALIDE n'a pas été reconnu.
Remplacez Object part Int16.

Afin de tester notre DataSource, nous allons utiliser une GridView

GridView dans la boite à outils

Sélectionnez SqlDataSource1 (la source de données que nous venons de créer, voyons voir ce que cela donne en exécution.

Lance l'application

Normalement vous devriez obtenir l’écran suivant (non, pas forcément Christine et Jacques)

Premier affichage de la grille

Pas très joli, mais ça fonctionne.


Mise à jour des tables


Maintenant, nous allons Essayez de modifier les données.

Cliquez sur le smart tag de la GridView et cochez
• Activer la modification
• Activer la suppression

Lancez à nouveau la page, puis essayez de modifier un prénom.

Chez moi lorsque je clique sur Mettre à jour j’ai un superbe écran d’erreur

Erreur du serveur dans l'application '/MySQLWebSite'.

Erreur de syntaxe près de '?, CLI_CREATION = ?, CLI_VALIDE = ? WHERE CLI_ID = ?' à la ligne 1

Tout à l’heure, nous avons enlevé les crochets, et bien maintenant il nous faut modifier les paramètres.
Remplacez-les ? Par les noms des paramètres.

UpdateCommand="UPDATE clients SET CLI_NOM = ?, CLI_CREATION = ?, CLI_VALIDE = ? WHERE CLI_ID = ?">
Après correction
UpdateCommand="UPDATE clients SET CLI_NOM = @CLI_NOM, CLI_CREATION = @CLI_CREATION, CLI_VALIDE = @CLI_VALIDE WHERE CLI_ID = @CLI_ID">

Essayons à nouveau notre modification de prénom.

Voilà qui est mieux.

Profitez-en pour modifier également les paramètres des requêtes Insert et Delete.

Essayons maintenant de supprimer un enregistrement

Erreur du serveur dans l'application '/MySQLWebSite'.

Parameter '@CLI_ID' must be defined.

ColèreA nouveau une erreur.

Lorsque nous utilisons une base de données SQL Server, la GridView reconnait automatiquement la clé de la table.

Mais pas avec MySQL.

Dans la définition de la grille ajoutez DataKeyNames="CLI_ID"

Comme ci-dessous.

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="CLI_ID" >

Et testez à nouveau la suppression.

OK c’est bon !

Voilà c’est tout pour aujourd’hui, la prochaine fois nous verrons l’insertion, les différents types de paramètres et d’autres choses intéressantes.

Partie 2

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir


Vous ètes ici

Accueil Accueil Pour les développeurs MySql et ASP.NET Partie 1