Partager via


Copie du contenu de DataSet

Vous pouvez créer une copie d’un DataSet élément afin de pouvoir travailler avec des données sans affecter les données d’origine, ou utiliser un sous-ensemble des données à partir d’un DataSet. Lors de la copie d’un DataSet, vous pouvez :

  • Créez une copie exacte du DataSet, notamment le schéma, les données, les informations d’état de ligne et les versions de ligne.

  • Créez un DataSet qui contient le schéma d’un DataSet existant, mais seulement les lignes modifiées. Vous pouvez retourner toutes les lignes qui ont été modifiées ou spécifier un DataRowState spécifique. Pour plus d’informations sur les états de ligne, consultez Les états de ligne et les versions de lignes.

  • Copiez le schéma ou la structure relationnelle, du DataSet seul, sans copier de lignes. Les lignes peuvent être importées dans un fichier existant DataTable à l'aide de ImportRow.

Pour créer une copie exacte du schéma et des DataSet données, utilisez la Copy méthode de DataSet. L’exemple de code suivant montre comment créer une copie exacte du DataSet.

Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();

Pour créer une copie d’un DataSet schéma qui inclut uniquement les données représentant Ajout, Modifié ou Deleted lignes, utilisez la GetChanges méthode dataSet. Vous pouvez également utiliser GetChanges pour renvoyer uniquement des lignes avec un état de ligne spécifié en passant une DataRowState valeur lors de l’appel de GetChanges. L’exemple de code suivant montre comment passer un DataRowState message lors de l’appel de GetChanges.

' Copy all changes.
Dim changeDataSet As DataSet = customerDataSet.GetChanges()
' Copy only new rows.
Dim addedDataSetAs DataSet = _
    customerDataSet.GetChanges(DataRowState.Added)
// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
// Copy only new rows.
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);

Pour créer une copie d’un DataSet schéma qui inclut uniquement le schéma, utilisez la Clone méthode du DataSet. Vous pouvez également ajouter des lignes existantes au cloné DataSet à l’aide de la ImportRow méthode de DataTable. ImportRow ajoute des données, un état de ligne et des informations de version de ligne à la table spécifiée. Les valeurs de colonne sont ajoutées uniquement lorsque le nom de colonne correspond et que le type de données est compatible.

L'exemple de code suivant crée un clone d'un DataSet, puis ajoute les lignes de l'DataSet original à la table Customers dans le clone DataSet pour les clients pour lesquels la colonne CountryRegion a la valeur "Allemagne".

Dim customerDataSet As New DataSet
        customerDataSet.Tables.Add(New DataTable("Customers"))
        customerDataSet.Tables("Customers").Columns.Add("Name", GetType(String))
        customerDataSet.Tables("Customers").Columns.Add("CountryRegion", GetType(String))
        customerDataSet.Tables("Customers").Rows.Add("Juan", "Spain")
        customerDataSet.Tables("Customers").Rows.Add("Johann", "Germany")
        customerDataSet.Tables("Customers").Rows.Add("John", "UK")

Dim germanyCustomers As DataSet = customerDataSet.Clone()

Dim copyRows() As DataRow = _
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")

Dim customerTable As DataTable = germanyCustomers.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  customerTable.ImportRow(copyRow)
Next
DataSet customerDataSet = new DataSet();
customerDataSet.Tables.Add(new DataTable("Customers"));
customerDataSet.Tables["Customers"].Columns.Add("Name", typeof(string));
customerDataSet.Tables["Customers"].Columns.Add("CountryRegion", typeof(string));
customerDataSet.Tables["Customers"].Rows.Add("Juan", "Spain");
customerDataSet.Tables["Customers"].Rows.Add("Johann", "Germany");
customerDataSet.Tables["Customers"].Rows.Add("John", "UK");

DataSet germanyCustomers = customerDataSet.Clone();

DataRow[] copyRows =
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");

DataTable customerTable = germanyCustomers.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  customerTable.ImportRow(copyRow);

Voir aussi