Insertion de plusieurs lignes paramétrées avec une seule requête en C#
Les requêtes paramétrées permettent aux développeurs d'exécuter des instructions SQL sans coder en dur les valeurs, empêchant ainsi SQL attaques par injection et amélioration des performances. L'insertion de plusieurs lignes avec des valeurs paramétrées peut être efficace, en particulier lorsque vous utilisez un plus grand nombre de lignes.
Dans le code fourni, chaque ligne est insérée individuellement, ce qui peut être lent. Pour résoudre ce problème, vous pouvez tirer parti des paramètres table avec SQL Server 2008 et versions ultérieures.
Création d'un paramètre table
Tout d'abord, créez un paramètre utilisateur. type de table défini qui définit les colonnes de vos données :
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) )
Création d'un fichier stocké Procédure
Ensuite, créez une procédure stockée qui accepte le paramètre table :
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable GO
Notez que le paramètre @MyTable est marqué comme READONLY car les paramètres table doivent être en lecture seule.
Exécuter la procédure stockée avec un DataTable
Enfin, exécutez la procédure stockée à partir de C# à l'aide d'un DataTable :
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 utilisant des paramètres table, vous pouvez insérer plusieurs lignes avec une seule requête paramétrée, de manière significative améliorer les performances.
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!