將大量行單獨插入 SQL Server 2008 資料庫會顯著影響效能。 本文示範了一種使用參數化表值參數和 C# 的更有效方法。
首先在 SQL Server 中建立一個使用者定義的表類型來鏡像目標表的結構:
<code class="language-sql">CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) ) GO</code>
接下來,建立一個預存程序,接受此表類型作為輸入並執行批次插入:
<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>
最後,使用 C# 填入 DataTable
並將其作為表值參數傳遞給預存程序:
<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>
此方法利用表值參數的強大功能,顯著提高從 C# 應用程式將多行插入 SQL Server 2008 資料庫的效率。 與單獨行插入相比,這種方法提供了卓越的性能。
以上是如何使用參數化表值參數和 C# 有效率地將多行插入 SQL Server 2008 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!