首頁 > 後端開發 > C++ > 如何從 C# 有效率地將多個參數化行插入 SQL Server 資料庫?

如何從 C# 有效率地將多個參數化行插入 SQL Server 資料庫?

Linda Hamilton
發布: 2025-01-05 00:47:40
原創
207 人瀏覽過

How Can I Efficiently Insert Multiple Parameterized Rows into a SQL Server Database from C#?

在 C 語言中將多個參數化行插入資料庫

在處理大量資料集或頻繁更新時,最佳化資料庫操作至關重要。在 C# 中有效地將多行插入資料庫會帶來重大挑戰,特別是當資料是從 Web 來源接收並且出於安全目的需要參數化時。

目前方法限制

提供的程式碼snippet 使用循環為每個資料元素執行單獨的插入語句:

foreach(string data in Scraper){
    // ...
    Command.executeNonQuery(); 
    conn.close();
}
登入後複製

但是,這種迭代方法效率低下,可能會導致

使用表值參數的最佳化解決方案

為了在SQL Server 2008及更高版本中更快、更有效率地插入數據,表值參數提供了一個引人注目的解決方案。透過定義使用者定義的表格類型並在預存程序中利用它,您可以在單一操作中插入多行。

步驟1:建立使用者定義的表格類型

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
登入後複製

第2 步驟:建立帶有表格值的預存程序參數

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
登入後複製

步驟3:從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();
    }
}
登入後複製

使用表值參數的好處

  • 減少網路流量:而不是發送多個INSERT 語句,僅發送一個請求,包含一批行。
  • 效能改進:資料庫引擎優化了插入過程,導致執行速度更快。
  • 增強的安全性:參數化查詢有助於防止 SQL 注入攻擊,因為資料值與查詢。

以上是如何從 C# 有效率地將多個參數化行插入 SQL Server 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板