Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
La DataSet classe et les classes associées sont des technologies .NET Framework héritées du début des années 2000 qui permettent aux applications d’utiliser des données en mémoire pendant que les applications sont déconnectées de la base de données. Les technologies sont particulièrement utiles pour les applications qui permettent aux utilisateurs de modifier les données et de conserver les modifications apportées à la base de données. Bien que les jeux de données soient une technologie éprouvée, l’approche recommandée pour les nouvelles applications .NET consiste à utiliser Entity Framework Core. Entity Framework offre un moyen plus naturel d’utiliser des données tabulaires en tant que modèles objet et dispose d’une interface de programmation plus simple.
Cet article explique comment interroger et modifier des données dans des tables dans des jeux de données .NET Framework. Vous pouvez modifier des données dans des tables de données comme vous modifiez les tables dans n’importe quelle base de données. Vous pouvez insérer, mettre à jour et supprimer des enregistrements dans la table. Dans un formulaire lié aux données, vous pouvez spécifier les champs modifiables par l’utilisateur.
Dans ce cas, l’infrastructure de liaison de données gère tout le suivi des modifications afin que les modifications puissent être renvoyées à la base de données. Si vous modifiez des données par programmation et que vous souhaitez renvoyer les modifications à la base de données, vous devez utiliser des objets et des méthodes qui effectuent le suivi des modifications.
Outre la modification des données réelles, vous pouvez également interroger une DataTable requête pour retourner des lignes de données spécifiques. Par exemple, vous pouvez rechercher des lignes individuelles, des versions d’origine ou proposées de lignes, des lignes qui ont changé ou des lignes qui contiennent des erreurs.
Conditions préalables
Pour utiliser Visual Studio pour interroger et modifier des données dans des jeux de données .NET Framework, vous avez besoin des éléments suivants :
- Les charges de travail de développement .NET desktop et de stockage et de traitement de données installées dans Visual Studio. Pour plus d’informations, consultez Modifier Visual Studio.
- Un projet C# ou Visual Basic (VB) .NET Framework créé.
- Ensemble de données créé à partir d’une base de données SQL Server Express LocalDB.
Modifier des lignes dans un jeu de données
Pour modifier une ligne existante dans un DataTable, vous devez rechercher les DataRow valeurs que vous souhaitez modifier, puis affecter les valeurs mises à jour aux colonnes souhaitées.
Si vous ne connaissez pas l’index de la ligne que vous souhaitez modifier, utilisez la FindBy méthode pour effectuer une recherche par la clé primaire.
NorthwindDataSet.CustomersRow customersRow =
northwindDataSet1.Customers.FindByCustomerID("ALFKI");
customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";
Une fois que vous connaissez l’index de ligne, vous pouvez l’utiliser pour accéder à la ligne et la modifier.
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";
Insérer de nouvelles lignes dans un jeu de données
Les applications qui utilisent des contrôles liés aux données ajoutent généralement de nouveaux enregistrements à l’aide du bouton Ajouter nouveau sur un contrôle BindingNavigator.
Vous pouvez également ajouter un nouvel enregistrement à un jeu de données en appelant la NewRow méthode sur le DataTable. Ensuite, ajoutez la ligne à la DataRow collection (Rows).
NorthwindDataSet.CustomersRow newCustomersRow =
northwindDataSet1.Customers.NewCustomersRow();
newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";
northwindDataSet1.Customers.Rows.Add(newCustomersRow);
Supprimer des enregistrements d’une table de données
Vous pouvez supprimer un DataRow en appelant la Remove méthode du DataRowCollection, ou en appelant la Delete méthode de l’objet DataRow .
La méthode Remove supprime la ligne de la collection. Si votre application n’a pas besoin d’envoyer de mises à jour à une source de données, vous pouvez supprimer des enregistrements en accédant directement à la collection de lignes de données avec Remove.
À l’inverse, la Delete méthode ne supprime pas réellement le DataRow, mais le marque pour suppression. La suppression réelle se produit lorsque vous appelez la méthode AcceptChanges. Vous pouvez vérifier par programme quelles lignes sont marquées pour suppression avant de les supprimer.
Pour conserver les informations dont le jeu de données a besoin pour envoyer des mises à jour à la source de données, utilisez la méthode Delete pour enlever DataRow du tableau de données. Si votre application utilise un TableAdapter ou DataAdapter, la Update méthode supprime des lignes dont la RowState valeur est Deleted.
L’exemple suivant montre comment appeler la Delete méthode pour marquer la première ligne de la Customers table comme supprimée :
Remarque
Si vous obtenez la propriété count d’un DataRowCollection, le nombre obtenu inclut les enregistrements marqués pour suppression. Pour obtenir un nombre précis d’enregistrements non marqués pour suppression, vous pouvez parcourir la collection et examiner la RowState propriété de chaque enregistrement. Les enregistrements marqués pour suppression ont une propriété RowState de Deleted. Vous pouvez également créer une vue de données d’un jeu de données qui filtre en fonction de l’état de ligne et obtient la propriété count à partir de celle-ci.
Vérification de la présence de lignes modifiées
Lorsque vous apportez des modifications aux enregistrements dans un jeu de données, des informations sur ces modifications sont stockées jusqu’à ce que vous les validiez. Vous validez les modifications lorsque vous appelez la AcceptChanges méthode d’un jeu de données ou d’une table de données, ou lorsque vous appelez la Update méthode d’un ou d’un TableAdapter adaptateur de données.
Les modifications sont suivies de deux façons dans chaque ligne de données :
Chaque ligne de données contient des informations relatives à son RowState, par exemple Added, Modified, Deletedou Unchanged.
Chaque ligne de données modifiée contient plusieurs versions. DataRowVersion inclut la version d'origine avant les modifications et la version actuelle après les modifications. Pendant qu’une modification est en attente et que vous pouvez répondre à l’événement RowChanging , une troisième version proposée est également disponible.
Pour rechercher les lignes modifiées, appelez la HasChanges méthode d’un jeu de données. La méthode retourne true si des modifications ont été apportées dans le jeu de données. Après avoir déterminé que les modifications existent, vous pouvez appeler la GetChanges méthode d’un DataSet ou DataTable pour retourner un ensemble de lignes modifiées.
L’exemple suivant montre comment vérifier la valeur de retour de la HasChanges méthode pour détecter s’il existe des lignes modifiées dans NorthwindDataset1.
if (northwindDataSet1.HasChanges())
{
// Changed rows were detected, add appropriate code.
}
else
{
// No changed rows were detected, add appropriate code.
}
Déterminer le type de modifications
Vous pouvez vérifier quel type de modifications ont été apportées dans un jeu de données en passant une valeur de l’énumération DataRowState à la HasChanges méthode.
L’exemple suivant montre comment vérifier le NorthwindDataset1 jeu de données pour déterminer si de nouvelles lignes ont été ajoutées.
if (northwindDataSet1.HasChanges(DataRowState.Added))
{
// New rows have been added to the dataset, add appropriate code.
}
else
{
// No new rows have been added to the dataset, add appropriate code.
}
Localiser les lignes qui ont des erreurs
Lorsque vous travaillez avec des colonnes et des lignes de données individuelles, vous pouvez rencontrer des erreurs. Vous pouvez vérifier la HasErrors propriété pour déterminer si des erreurs existent dans un DataSet, DataTableou DataRow.
Si la HasErrors propriété du jeu de données est true, effectuez une itération dans les collections de tables, puis dans les lignes, pour rechercher les lignes avec les erreurs.
private void FindErrors()
{
if (dataSet1.HasErrors)
{
foreach (DataTable table in dataSet1.Tables)
{
if (table.HasErrors)
{
foreach (DataRow row in table.Rows)
{
if (row.HasErrors)
{
// Process error here.
}
}
}
}
}
}
Contenu connexe
- Outils de gestion de données dans Visual Studio