L'insertion de plusieurs lignes individuellement dans une base de données SQL Server 2008 peut avoir un impact significatif sur les performances. Cet article démontre une approche plus efficace utilisant des paramètres table paramétrés et C#.
Commencez par créer un type de table défini par l'utilisateur dans SQL Server qui reflète la structure de votre table cible :
<code class="language-sql">CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO</code>
Ensuite, créez une procédure stockée qui accepte ce type de table en entrée et effectue l'insertion groupée :
<code class="language-sql">CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- Readonly is crucial for table-valued parameters ) AS BEGIN INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable; END; GO</code>
Enfin, utilisez C# pour remplir un DataTable
et transmettez-le en tant que paramètre table à la procédure stockée :
<code class="language-csharp">DataTable dt = new DataTable(); dt.Columns.Add("Col1", typeof(int)); dt.Columns.Add("Col2", typeof(string)); // Populate the DataTable with your data using (SqlConnection con = new SqlConnection("ConnectionString")) { using (SqlCommand cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MyTable", dt); // AddWith Value handles SqlDbType automatically con.Open(); cmd.ExecuteNonQuery(); } }</code>
Cette méthode exploite la puissance des paramètres table pour améliorer considérablement l'efficacité de l'insertion de plusieurs lignes dans votre base de données SQL Server 2008 à partir de votre application C#. Cette approche offre des performances supérieures par rapport aux insertions de lignes individuelles.
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!