本指南示範如何使用 C# 中的單一參數化查詢有效地將多行插入 SQL Server 資料庫(2008 或更高版本)。 這種技術採用表值參數,顯著提高了單一插入語句的效能。
首先在 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 here... For example: DataRow row1 = dt.NewRow(); row1["Col1"] = 1; row1["Col2"] = "Value 1"; dt.Rows.Add(row1); // ...add more rows as needed...</code>
最後,使用 SqlCommand
執行預存程序:
<code class="language-csharp">using (SqlConnection con = new SqlConnection("YourConnectionString")) { using (SqlCommand cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles SqlDbType automatically con.Open(); cmd.ExecuteNonQuery(); } }</code>
此方法提供了一種高效的方法來插入具有參數化值的多行,與單一 INSERT
語句相比,可以防止 SQL 注入漏洞並提高資料庫效能。 請記得將 "YourConnectionString"
替換為您的實際連接字串。
以上是如何在 C# 中使用表值參數高效插入帶有參數化變數的多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!