Lorsque vous travaillez avec de vastes ensembles de données ou des mises à jour fréquentes, il est crucial d'optimiser les opérations de la base de données. L'insertion efficace de plusieurs lignes dans une base de données en C# pose un défi important, surtout si les données proviennent de sources Web et doivent être paramétrées à des fins de sécurité.
Le code fourni L'extrait utilise une boucle pour exécuter des instructions d'insertion individuelles pour chaque élément de données :
foreach(string data in Scraper){ // ... Command.executeNonQuery(); conn.close(); }
Cependant, cette approche itérative est inefficace et peut conduire à des goulots d'étranglement en termes de performances avec des ensembles de données plus volumineux.
Pour une insertion de données plus rapide et plus efficace dans SQL Server 2008 et versions ultérieures, les paramètres à valeur de table offrent une solution convaincante. En définissant un type de table défini par l'utilisateur et en l'exploitant dans une procédure stockée, vous pouvez insérer plusieurs lignes en une seule opération.
Étape 1 : Créer un type de table défini par l'utilisateur
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) )
Étape 2 : Créer une procédure stockée avec une valeur de table Paramètre
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
Étape 3 : Exécuter une procédure stockée à partir de C#
DataTable dt = new DataTable(); // Fill data table with values... 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(); } }
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!