首頁 > 後端開發 > C++ > 如何在 C# 和 SQL Server 中執行高效率的參數化批次插入?

如何在 C# 和 SQL Server 中執行高效率的參數化批次插入?

Susan Sarandon
發布: 2024-12-30 22:17:10
原創
817 人瀏覽過

How Can I Perform Efficient Parameterized Bulk Inserts in C# and SQL Server?

在C# 中使用參數化變數執行批次插入

在資料庫操作中,通常需要在資料庫中插入多個參數化變數,尤其是當資料庫正在從Web 應用程式接收資料時。為了最佳化此類操作並避免重複,可以使用預存程序和表值參數。

要在C# 中實現此目的,請按照以下步驟操作:

  1. 建立使用者定義的表格類型(UDT):

    • 定義UDT 以符合要插入的資料的結構。例如:

      CREATE TYPE MyTableType AS TABLE
      (
          Col1 int,
          Col2 varchar(20)
      )
      GO
      登入後複製
  2. 使用表值參數建立預存程序:

    • 一個接受UDT 作為參數的預存程序。過程會將資料插入目標資料庫表中:

      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
      GO
      登入後複製
  3. 填入資料表:

    • 使用與UDT 相符的列定義初始化DataTable並用您的資料填充它data.
  4. 使用參數執行儲存程序:

    • 建立與資料庫的連接並建立命令物件對於預存程序。
    • 將填入的 DataTable 作為結構化類型加入到指令參數中參數。
    • 執行指令進行批次插入。

      DataTable dt = new DataTable();
      dt.Columns.Add("Col1", typeof(int));
      dt.Columns.Add("Col2", typeof(string));
      
      // Fill your data table here
      
      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();
        }
      }
      登入後複製

透過以下步驟,您可以有效地執行使用 C# 程式碼對 SQL Server 資料庫進行參數化批次插入。這種方法不僅可以防止重複,還可以透過對多行執行單一查詢來最佳化資料庫效能。

以上是如何在 C# 和 SQL Server 中執行高效率的參數化批次插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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