ホームページ > データベース > mysql チュートリアル > テーブル値パラメーターを使用して C# でパラメーター化された変数を含む複数の行を効率的に挿入する方法

テーブル値パラメーターを使用して C# でパラメーター化された変数を含む複数の行を効率的に挿入する方法

Barbara Streisand
リリース: 2025-01-12 06:02:44
オリジナル
353 人が閲覧しました

How to Efficiently Insert Multiple Rows with Parameterized Variables in C# Using Table-Valued Parameters?

C# での一括データ挿入のためのテーブル値パラメーターの活用

このガイドでは、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# 実装: データ テーブルとストアド プロシージャの実行

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>
ログイン後にコピー

このメソッドは、パラメーター化された値を持つ複数の行を挿入する非常に効率的な方法を提供し、SQL インジェクションの脆弱性を防ぎ、個々の INSERT ステートメントと比較してデータベースのパフォーマンスを向上させます。 "YourConnectionString" を実際の接続文字列に置き換えることを忘れないでください。

以上がテーブル値パラメーターを使用して C# でパラメーター化された変数を含む複数の行を効率的に挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート