Comment : mettre à jour les enregistrements dans une base de données

Mise à jour : novembre 2007

Vous pouvez utiliser la méthode TableAdapter.Update pour mettre à jour (modifier) les enregistrements d'une base de données. La méthode TableAdapter.Update fournit plusieurs surcharges qui exécutent des opérations différentes selon les paramètres passés. Il est important de comprendre les résultats de l'appel de ces signatures de méthode différentes.

Remarque :

Si votre application n'utilise pas de TableAdapters, vous pouvez utiliser des objets de commande pour mettre à jour des enregistrements dans votre base de données (par exemple, ExecuteNonQuery). Pour plus d'informations sur la mise à jour de données avec des objets de commande, consultez « Mettre à jour des enregistrements à l'aide d'objets de commande » ci-dessous.

Le tableau suivant décrit le comportement des diverses méthodes TableAdapter.Update :

Méthode

Description

TableAdapter.Update(DataTable)

Essaie d'enregistrer toutes les modifications apportées à la DataTable dans la base de données. (Cela inclut la suppression des lignes supprimées de la table, l'ajout de lignes insérées à la table et la mise à jour de lignes de la table qui ont changé.)

TableAdapter.Update(DataSet)

Bien que le paramètre prenne un groupe de données, le TableAdapter essaie d'enregistrer toutes les modifications du TableAdapter DataTable associé dans la base de données. (Cela inclut la suppression des lignes supprimées de la table, l'ajout de lignes insérées à la table et la mise à jour de lignes de la table qui ont changé.)

Remarque :

La DataTable associée d'un TableAdapter est la DataTable créée lors de la configuration initiale du TableAdapter.

TableAdapter.Update(DataRow)

Tente d'enregistrer les modifications dans l'objet DataRow indiqué dans la base de données.

TableAdapter.Update(DataRows())

Tente d'enregistrer les modifications apportées à une ligne du tableau de DataRow dans la base de données.

TableAdapter.Update("new column values", "original column values")

Tente d'enregistrer les modifications apportées à une seule ligne qui est identifiée par les valeurs des colonnes d'origine.

Vous utilisez en général la méthode TableAdapter.Update qui prend un DataSet, DataTable ou DataRow lorsque votre application utilise des groupes de données exclusivement pour stocker des données.

Vous utilisez en général la méthode TableAdapter.Update qui prend des valeurs de colonne lorsque votre application utilise des objets pour stocker des données.

Si votre TableAdapter n'a pas une méthode Update qui prend des valeurs de colonne, cela signifie que le TableAdapter est configuré pour utiliser des procédures stockées ou que sa propriété GenerateDBDirectMethods a la valeur false. Essayez de définir la propriété GenerateDBDirectMethods du TableAdapter à true à partir du Concepteur de Dataset puis enregistrez le groupe de données pour régénérer le TableAdapter. Si le TableAdapter n'a pas encore une méthode Update qui prend des valeurs de colonne, la table ne fournit probablement pas assez d'informations de schéma pour faire la distinction entre des lignes individuelles (par exemple, aucune clé primaire n'est définie sur la table).

Mise à jour d'enregistrements existants à l'aide de TableAdapters

Les TableAdapters offrent des moyens différents de mettre à jour les enregistrements d'une base de données en fonction des besoins de votre application.

Si votre application utilise des groupes de données pour stocker des données, vous pouvez mettre à jour simplement les enregistrements dans la DataTable voulue, puis appeler la méthode TableAdapter.Update et passer soit DataSet, DataTable, DataRow soit un tableau de DataRow. Le tableau ci-dessus décrit les différentes méthodes Update.

Pour mettre à jour des enregistrements dans une base de données avec la méthode TableAdapter.Update qui prend DataSet, DataTable, DataRow ou DataRows ()

  1. Modifiez les enregistrements dans la DataTable voulue en modifiant directement DataRow dans DataTable. Pour plus d'informations, consultez Comment : modifier des lignes dans un DataTable.

  2. Après avoir modifié les lignes de DataTable, appelez la méthode TableAdapter.Update. Vous pouvez contrôler la quantité de données à mettre à jour en passant un DataSet entier, un DataTable, un tableau de DataRow, ou une seule DataRow.

    Le code suivant indique comment modifier un enregistrement dans une DataTable puis appeler la méthode TableAdapter.Update pour enregistrer les modifications dans la base de données. (Cet exemple utilise la table Region de la base de données Northwind.)

    ' Locate the row you want to update.
    Dim regionRow As NorthwindDataSet.RegionRow
    regionRow = NorthwindDataSet._Region.FindByRegionID(1)
    
    ' Assign the new value to the desired column.
    regionRow.RegionDescription = "East"
    
    ' Save the updated row to the database
    Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
    
    // Locate the row you want to update.
    NorthwindDataSet.RegionRow regionRow;
    regionRow = northwindDataSet.Region.FindByRegionID(1);
    
    // Assign the new value to the desired column.
    regionRow.RegionDescription = "East";
    
    // Save the updated row to the database.
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Si votre application utilise des objets pour stocker les données de votre application, vous pouvez utiliser les méthodes DBDirect du TableAdapter pour envoyer des données directement de vos objets à la base de données. Ces méthodes vous permettent de passer des valeurs individuelles pour chaque colonne en tant que paramètres de méthode. L'appel à cette méthode met à jour un enregistrement existant dans la base de données avec les valeurs de colonne passées dans la méthode.

La procédure suivante utilise la table Region de Northwind en tant qu'exemple.

Pour mettre à jour des enregistrements d'une base de données à l'aide de la méthode TableAdapter.Update qui prend des valeurs de colonne

  • Appelez la méthode Update du TableAdapter, en passant les valeurs nouvelles et d'origine pour chaque colonne en tant que paramètres.

    Remarque :

    Si vous n'avez pas d'instance disponible, instanciez le TableAdapter que vous voulez utiliser.

    Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter
    
    regionTableAdapter.Update(1, "East", 1, "Eastern")
    
    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    regionTableAdapter.Update(1, "East", 1, "Eastern");
    

Mettre à jour des enregistrements à l'aide d'objets de commande

L'exemple suivant met à jour des enregistrements existants directement dans une base de données à l'aide d'objets de commande. Pour plus d'informations concernant l'utilisation d'objets de commande pour exécuter des commandes et des procédures stockées, consultez Extraction de données dans votre application.

La procédure suivante utilise la table Region de Northwind en tant qu'exemple.

Pour mettre à jour des enregistrements existants dans une base de données à l'aide d'objets de commande

  • Créez un objet de commande ; définissez ses propriétés Connection, CommandType et CommandText, puis ouvrez une connexion et exécutez la commande.

    Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING")
    
    Dim cmd As New System.Data.SqlClient.SqlCommand
    cmd.CommandType = System.Data.CommandType.Text
    cmd.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1"
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    cmd.ExecuteNonQuery()
    sqlConnection1.Close()
    
    System.Data.SqlClient.SqlConnection sqlConnection1 = 
        new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");
    
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1";
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
    

Sécurité

Vous devez avoir accès à la base de données à laquelle vous essayez de vous connecter, et détenir les autorisations permettant de mettre à jour des enregistrements dans la table voulue.

Voir aussi

Tâches

Comment : supprimer les enregistrements dans une base de données

Comment : insérer de nouveaux enregistrements dans une base de données

Comment : enregistrer les données d'un objet dans une base de données

Concepts

Vue d'ensemble de TableAdapter

Autres ressources

Mise en route avec l'accès aux données

Connexion aux données dans Visual Studio

Préparation de votre application pour recevoir des données

Extraction de données dans votre application

Affichage des données sur des formulaires dans les applications Windows

Modification des données dans votre application

Validation des données

Enregistrement des données