ホームページ >データベース >mysql チュートリアル >C# を使用してパラメータ化された複数の行をデータベースに効率的に挿入するにはどうすればよいですか?

C# を使用してパラメータ化された複数の行をデータベースに効率的に挿入するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-12 08:19:42981ブラウズ

How to Efficiently Insert Multiple Parameterized Rows into a Database using C#?

C# でのデータベース挿入の最適化: 単一のパラメーター化されたクエリのアプローチ

多数の行をデータベースに個別に挿入するのは非効率です。 この記事では、C# で単一のパラメーター化されたクエリを使用して一括挿入を実現する高パフォーマンスの方法を示します。

重要なのは、ストアド プロシージャとテーブル値パラメーターを活用することです。 このアプローチには、次の 3 つの主要な手順が含まれます。

  1. テーブルタイプの定義:

    カスタム SQL Server テーブル タイプを作成して、列名とデータ型を指定してデータの構造を定義します。

  2. ストアド プロシージャの作成:

    カスタム テーブル タイプを読み取り専用のテーブル値パラメータとして受け入れるストアド プロシージャを開発します。この手順により、ターゲット データベース テーブルにデータが挿入されます。 テーブル値パラメーターは である必要がありますREADONLY.

    であることを覚えておいてください。
  3. C# コードの実装:

    C# アプリケーション内:

    • カスタム テーブル タイプの構造をミラーリングして、DataTable オブジェクトを作成します。
    • この DataTable に、挿入するデータを入力します。
    • DataTable をテーブル値パラメーターとして渡して、ストアド プロシージャを実行します。

このプロセスを示す例は次のとおりです:

テーブルタイプ (SQL):

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 INT,
    Col2 VARCHAR(20)
)
GO</code>

ストアド プロシージャ (SQL):

<code class="language-sql">CREATE PROCEDURE MyProcedure (@MyTable MyTableType READONLY)
AS
BEGIN
    INSERT INTO MyTable (Col1, Col2)
    SELECT Col1, Col2 FROM @MyTable;
END;
GO</code>

C# コード:

<code class="language-csharp">using System.Data;
using System.Data.SqlClient;

// ... other code ...

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Populate dt with your data here...  e.g.,
//DataRow row = dt.NewRow();
//row["Col1"] = 1;
//row["Col2"] = "Value1";
//dt.Rows.Add(row);


using (SqlConnection con = new SqlConnection("ConnectionString"))
{
    using (SqlCommand cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles type inference
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>

この方法では、データベースの往復回数が減り、データベースの挿入効率が大幅に向上し、より高速でスケーラブルなデータ処理が可能になります。

以上がC# を使用してパラメータ化された複数の行をデータベースに効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。