Il est possible d'utiliser une source de données pour effectuer un SELECT et récupérer par programmation le résultat de cette requête. Ceci nous permettra de manipuler les données à notre guise, un peu comme si on avait fait la requête « à bras », tout en profitant des facilités des sources de données.
▼Publicité Le texte se poursuit plus bas
Un DataView est un objet permettant de stocker un ensemble de données en mémoire. Attention : le mot DataView réfère à une vue au sens SQL. Il ne s'agit pas d'un contrôle visuel.
Un DataView est tout à fait approprié pour stocker le résultat d'une requête.
En mémoire, le contenu du DataView sera un tableau à deux dimensions. On aura une ligne par enregistrement retourné. Pour chaque enregistrement, on aura une colonne pour chaque champ demandé dans la requête.
1 | Apple iPad 4e génération 16 Go Wi-Fi |
2 | Ordinateur Toshiba Satellite L850 |
4 | Clé USB Kingston 32 Go |
8 | Router D-Link sans fil 802.11b/g/n |
Si la requête permet de retrouver 0 ou 1 enregistrement, la structure du code pour récupérer le résultat de la requête dans un DataView ressemblera à ceci :
Ex :
DataView dataViewProduit = (DataView)dataSourceProduit.Select(DataSourceSelectArguments.Empty);
if (dataViewProduit.Count > 0)
{
DataRowView donnees = dataViewProduit[0]; // retrouve la première ligne de données (ce sera la seule)
id = ...
description = ...
}
else
{
labelMessage.Text = "...";
}
Lorsque votre requête peut retourner plusieurs enregistrements, vous aurez probablement besoin de boucler dans les résultats de la requête et de faire un traitement particulier pour certains enregistrements. Le code suivant vous permettra d'y arriver.
Ex :
DataView dataViewProduit = (DataView)dataSourceProduit.Select(DataSourceSelectArguments.Empty);
if (dataViewProduit.Count > 0)
{
foreach (DataRowView donnees in dataViewProduit)
{
if (...)
{
...
}
else if (...)
{
...
}
else if (...)
{
...
// dans cet exemple, on utilise break pour sortir de la boucle foreach lorsqu'on a trouvé une valeur donnée
// à vous d'adapter ce code pour répondre à vos besoins
break;
}
}
}
else
{
labelMessage.Text = "...";
}
Pour manipuler les données, on doit extraire une ligne du tableau en la stockant dans un objet de type DataRowView. Cette extraction devra être réalisée même si la requête n'a retourné qu'un seul enregistrement.
Ex : si la requêne ne retourne qu'un seul enregistrement :
DataRowView donnees = dataViewProduit[0]; // retrouve la première ligne de données
ou, si la requête peut retourner plusieurs enregistrements :
foreach (DataRowView donnees in dataViewProduit)
{
...
}
Dans cet exemple, la variable donnees aura la forme suivante :
1 | Apple iPad 4e génération 16 Go Wi-Fi |
Le DataRowView est un vecteur. Chaque champ peut donc être lu à l'aide d'un indice. Plutôt que de travailler avec des indices numériques, on travaillera avec le nom du champ.
Attention : un élément tiré d'un DataRowView est un objet. Il faut donc le transtyper pour pouvoir l'utiliser correctement.
Ex :
int id = Convert.ToInt32(donnees["produit_id"]); // contiendra la valeur 1
String description = donnees["produit_description"].ToString(); // contiendra la valeur « Apple iPad 4e génération 16 Go Wi-Fi »
« Les bases fondamentales du langage Transact SQL». Dotnet France. http://www.dotnet-france.com/Documents/SQLServer/Les%20bases%20fondamentales%20du%20langage%20Transact%20SQL.pdf
Site fièrement hébergé chez A2 Hosting.