Jérome Andureu
Utilisation du Microsoft Application Block Data Access
Utilisation de la brique Data Access à travers des exemples simples
Par Jérome Andureu publié le 05/12/2003 à 00:00, lu 20241 fois, 1 pages
Introduction et préalable
Nous étudierons dans cet article l'utilisation du bloc Data Access Version 2 afin de récupérer des données et de les stocker dans un Dataset en faisant appel à une procédure stockée.

Vous devez télécharger le bloc applicatif Data Access sur MSDN à cette adresse :

http://www.microsoft.com/downloads/details.aspx?FamilyId=F63D1F0A-9877-4A7B-88EC-0426B48DF275&displaylang=en


Intérêt du bloc applicatif DataAccess :

Grâce à cette « brique », l'ensemble des opérations d'accès à la base, de passage de requêtes, d'utilisation des procédures stockées, de récupération des résultats dans des Dataset ou Datareader entre autres, est considérablement simplifié.
La version 2 de cette « brique » supporte d'ailleurs la mise à jour de la base de données en utilisant un Dataset.

Mise en place du bloc application dans l'environnement .NET

Afin de pouvoir utiliser la « brique » DataAccess dans vos projets, vous disposez de deux manières possibles :
  1. Soit ajouter simplement l'assembly Microsoft.ApplicationBlocks.Data comportant la classe SqlHelper à votre projet
  2. Soit ajouter une référence à votre projet en cours.
Rappel : Un assembly doit avoir une référence dll afin de pouvoir être référencé.

Pour générer votre dll "Microsoft.ApplicationBlocks.Data.dll", il faut donc en premier lieu compiler le projet Microsoft.ApplicationBlocks.data.
Vous pouvez ouvrir ce projet depuis le menu démarrer (Un raccourci s'est crée après l'installation du fichier .msi téléchargé plus haut.)



Enfin, il vous faudra une référence d'assemblage sur chaque fichier ou formulaire, comme indiqué ci-après :
using Microsoft.ApplicationBlocks.Data ;
Etant donné que le bloc s'appuie sur d'autres namespaces, il vous faudra ajouter pour la plupart de vos projets les références :
System.Data ;
System.Data.SqlClient ;


Vous pouvez désormais utiliser l'ensemble des méthodes de la classe SqlHelper dont voici les principales :
  1. ExecuteNonQuery
  2. ExecuteDataset
  3. ExecuteReader
  4. ExecuteScalar
  5. ExecuteXmlReader
  6. FillDataset
  7. UpdateDataset,....
Exemples d'utilisation
Cas : A partir d'un formulaire où l'on saisit un champ 'pseudo' et un champ 'pass', nous allons récupérer certaines données :
  1. Dans notre premier exemple, nous récupérons une valeur à travers un paramètre SQL
    Nous afficherons le résultat dans le label Label1
  2. Dans notre second exemple, nous récupérons des valeurs dans un Dataset :
    Nous afficherons le résultat dans le DataGrid Datagrid1


Rappels :
Afin de nous connecter à la base de données, nous utilisons une ConnectionString que nous avons
au préalable placée dans les balises <appSettings> du fichier web.config (pour de l'ASP.NET)
<appSettings>
     <add key="ConnectionString" value="user id=XXX;password=XXX;initial catalog=VMTPK;data source=localhost;Connect Timeout=10"/>		        
</appSettings>

1.Récupération de données dans une valeur
Dans cet exemple, nous souhaitons récupérer la valeur « droit » en fonction du pseudo et du mot de passe d'un utilisateur.
Nous utiliserons la procédure stockée suivante pour réaliser ce premier exemple :



Exemple de code d'appel d'une procédure stockée avec plusieurs paramètres

Afin de passer nos paramètres à la procédure stockée, nous déclarons un tableau de paramètres nommé 'arParms'.
Celui-ci comporte deux paramètres d'entrées (INPUT), et un de sortie (OUTPUT).
Le mot clé « Output » est nécessaire pour récupérer une valeur à travers un paramètre SQL.
public static int Identifier_droit(string pseudo, string pass)
{
	// tableau de parametres (2 input et 1 output) 
	SqlParameter [] arParms = new SqlParameter[3];                     

	// @pseudo Input Parameter 
	arParms[0] = new SqlParameter("@pseudo", pseudo  ); 
	arParms[0].Value = pseudo;

	// @pass Input Parameter 
	arParms[1] = new SqlParameter("@pass", pass  ); 
	arParms[1].Value = pass;

	// @droit Output Parameter
	arParms[2] = new SqlParameter("@droit",SqlDbType.Int);
	arParms[2].Direction = ParameterDirection.Output;

Une fois ce tableau rempli, nous appelons simplement la méthode ExecuteNonQuery de la classe SqlHelper.cs.
SqlHelper.ExecuteNonQuery(ConfigurationSettings.AppSettings["ConnectionString"],CommandType.StoredProcedure,"SelectUser",arParms);
La valeur est récupérée après l'exécution de la procédure stockée dans le tableau arParms.
En effet, nous avons déclaré un paramètre de sortie « @droit ».
int droit=(int)(arParms[2].Value);

return droit;
		
}



On obtient après avoir saisi un pseudo et un mot de passe:



2.Récupération de données dans un Dataset
Nous récupérons ici le résultat dans un Dataset.
Nous utiliserons la procédure stockée suivante pour réaliser cet exemple :



Rappel définition Dataset et intérêt:

Le Dataset permet de récupérer un ensemble de valeurs et de les stocker en mode déconnecté.
Ceci facilite l'utilisation et la manipulation d'un ensemble de données dans le code tout en gardant les contraintes existantes dans les tables SQL.
De plus, l'affichage d'un dataset est aisé à l'aide d'un DataGrid.

Exemple de code d'appel d'une procédure stockée avec plusieurs paramètres

Nous utilisons quasiment le même tableau de paramètres SQL 'arParms' défini plus haut, sans le paramètre SQL de retour @droit,
car ici nous récupérons les valeurs dans un dataset.
Ensuite, pour récupérer les données dans un Dataset, nous utilisons simplement la méthode ExecuteDataset de la classe SqlHelper.
Cette méthode se charge donc d'établir une connection à la base, de remplir le Dataset et de fermer la connection après son appel.
public static DataSet Identifier_droit2(string pseudo, string pass)
{
	// Tableau de paramtres 
	SqlParameter [] arParms = new SqlParameter[2];                     

	// @pseudo Input Parameter 
	arParms[0] = new SqlParameter("@pseudo", pseudo  ); 
			
	// @pass Input Parameter 
	arParms[1] = new SqlParameter("@pass", pass  ); 
			
	// Appel de la mthode ExecuteDataSet de la classe SqlHelper
	// connection string, procdure stocke et tableau de paramtres SQL
			 
	DataSet ds=
	SqlHelper.ExecuteDataset(ConfigurationSettings.AppSettings["ConnectionString"],CommandType.StoredProcedure,"SelectUser2",arParms);	
				
	return ds;
}



Si nous souhaitons afficher les valeurs de retour, il nous suffit de remplir un DataGrid :
DataGrid1.DataSource= Components.Utilisateurs.Identifier_droit2(TextBox1.Text,TextBox2.Text);

DataGrid1.DataBind();



On obtient après avoir saisi un pseudo et un mot de passé :

Conclusion
Nous avons rapidement les méthodes ExecuteNonQuery et ExecuteDataset de la classe SQLHelper.
Les autres méthodes de la classe sont tout aussi simples à mettre en oeuvre.
Cette brique apporte donc une simplification certaine dans l'écriture de notre code et contribue sûrement à l'élaboration d'un code efficace.



 
» Démarrer une discussion