Insérer de nouveaux enregistrements dans une base de données dans des applications .NET Framework

Remarque

Les jeux de données et les classes associées sont des technologies .NET Framework héritées qui datent du début des années 2000. Elles 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. Elles sont particulièrement utiles aux applications qui permettent aux utilisateurs de modifier des données, et de rendre ces changements persistants dans la base de données. Même si les jeux de données sont une technologie très efficace, nous vous recommandons d’utiliser Entity Framework Core pour les nouvelles applications .NET. Entity Framework offre un moyen plus naturel d’utiliser des données tabulaires en tant que modèles objet. De plus, il présente une interface de programmation plus simple.

Pour insérer de nouveaux enregistrements dans une base de données avec ADO.NET dans un projet .NET Framework, vous pouvez utiliser la méthode TableAdapter.Update ou l’une des méthodes DBDirect de TableAdapter (en particulier la méthode TableAdapter.Insert). Pour plus d'informations, consultez TableAdapter.

Si votre application n’utilise pas TableAdapters, vous pouvez utiliser des objets de commande (par exemple SqlCommand) pour insérer de nouveaux enregistrements dans votre base de données.

Si votre application utilise des jeux de données pour stocker des données, utilisez la méthode TableAdapter.Update. La méthode Update envoie toutes les modifications (mises à jour, insertions et suppressions) à la base de données.

Si votre application utilise des objets pour stocker des données, ou si vous souhaitez pourvoir mieux contrôler la création d’enregistrements dans la base de données, utilisez la méthode TableAdapter.Insert.

Si votre TableAdapter n’a pas de méthode Insert, cela signifie que TableAdapter est configuré pour utiliser des procédures stockées ou que sa propriété GenerateDBDirectMethods est définie sur false. Essayez de définir la propriété GenerateDBDirectMethods de TableAdapter sur true à partir du concepteur de Dataset, puis enregistrez le jeu de données. Cette action régénère l’objet TableAdapter. Si TableAdapter n’a toujours pas de méthode Insert, la table ne fournit probablement pas suffisamment d’informations de schéma pour faire la distinction entre les lignes individuelles (par exemple, aucune clé primaire n’est définie sur la table).

Notes

Cet article s’applique au développement ADO.NET et .NET Framework. Pour la même tâche avec Entity Framework 6, consultez Ajout d’une nouvelle entité au contexte. Pour Entity Framework Core, consultez Ajout de données.

Insérer de nouveaux enregistrements à l’aide de TableAdapters

Les TableAdapters fournissent différentes façons d’insérer de nouveaux enregistrements dans une base de données, en fonction des exigences de votre application.

Si votre application utilise des jeux de données pour stocker des données, vous pouvez ajouter de nouveaux enregistrements au DataTable souhaité dans le jeu de données, puis appeler la méthode TableAdapter.Update. La méthode TableAdapter.Update envoie les modifications apportées au DataTable à la base de données (y compris les enregistrements modifiés et supprimés).

Pour insérer de nouveaux enregistrements dans une base de données à l’aide de la méthode TableAdapter.Update

  1. Ajoutez de nouveaux enregistrements au DataTable souhaité en créant un nouveau DataRow et en l’ajoutant à la collection Rows.

  2. Une fois les nouvelles lignes ajoutées à DataTable, appelez la méthode TableAdapter.Update. Vous pouvez contrôler la quantité de données à mettre à jour en transmettant DataSet entier, DataTable, un tableau de DataRow ou un seul DataRow.

    Le code suivant montre comment ajouter un nouvel enregistrement à DataTable, puis appeler la méthode TableAdapter.Update pour enregistrer la nouvelle ligne dans la base de données. (Cet exemple utilise la table Region dans la base de données Northwind.)

    // Create a new row.
    NorthwindDataSet.RegionRow newRegionRow;
    newRegionRow = northwindDataSet.Region.NewRegionRow();
    newRegionRow.RegionID = 5;
    newRegionRow.RegionDescription = "NorthWestern";
    
    // Add the row to the Region table
    this.northwindDataSet.Region.Rows.Add(newRegionRow);
    
    // Save the new row to the database
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Pour insérer de nouveaux enregistrements dans une base de données à l’aide de la méthode TableAdapter.Insert

Si votre application utilise des objets pour stocker des données, vous pouvez utiliser la méthode TableAdapter.Insert pour créer des lignes directement dans la base de données. La méthode Insert accepte les valeurs individuelles pour chaque colonne en tant que paramètres. L’appel de la méthode insère un nouvel enregistrement dans la base de données avec les valeurs de paramètre passées.

  • Appelez la méthode Insert de TableAdapter en passant les valeurs de chaque colonne en tant que paramètres.

La procédure suivante illustre l’utilisation de la méthode TableAdapter.Insert pour insérer des lignes. Cet exemple insère des données dans la table Region dans la base de données Northwind.

Notes

Si vous n’avez pas d’instance disponible, instanciez le TableAdapter que vous souhaitez utiliser.

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
    new NorthwindDataSetTableAdapters.RegionTableAdapter();

regionTableAdapter.Insert(5, "NorthWestern");

Insérer de nouveaux enregistrements à l’aide d’objets de commande

Vous pouvez insérer de nouveaux enregistrements directement dans une base de données à l’aide d’objets de commande.

Pour insérer de nouveaux enregistrements dans une base de données à l’aide d’objets de commande

  • Créez un objet de commande, puis définissez ses propriétés Connection, CommandTypeet CommandText .

L’exemple suivant illustre l’insertion d’enregistrements dans une base de données à l’aide d’un objet de commande. Cela insère des données dans la table Region dans la base de données Northwind.

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 = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();

Sécurité .NET

Vous devez avoir accès à la base de données à laquelle vous essayez de vous connecter, ainsi que l’autorisation d’effectuer des insertions dans la table souhaitée.