Effectuer des insertions groupées avec des variables paramétrées en C#
Dans les opérations de base de données, il est souvent souhaitable d'insérer plusieurs variables paramétrées dans une base de données, en particulier lorsque la base de données reçoit des données d'une application Web. Pour optimiser de telles opérations et éviter les répétitions, vous pouvez utiliser une procédure stockée et un paramètre table.
Pour y parvenir en C#, suivez ces étapes :
Créer un type de table défini par l'utilisateur (UDT) :
Définir un UDT pour correspondre à la structure des données que vous souhaitez insérer. Par exemple :
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO
Créer une procédure stockée avec un paramètre table :
Créez une procédure stockée qui accepte l'UDT comme paramètre. La procédure insérera les données dans la table de la base de données cible :
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- Note: Table-valued parameters must be readonly ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable GO
Remplir un DataTable :
Exécuter la procédure stockée avec les paramètres :
Exécutez la commande pour effectuer l'insertion groupée.
DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Fill your data table here using (var con = new SqlConnection("ConnectionString")) { using(var cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt; con.Open(); cmd.ExecuteNonQuery(); } }
En suivant ces étapes, vous pouvez effectuer efficacement insertions groupées paramétrées dans une base de données SQL Server à l'aide du code C#. Cette approche évite non seulement les répétitions, mais optimise également les performances de la base de données en exécutant une seule requête pour plusieurs lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!