ホームページ > バックエンド開発 > C++ > C# でパラメータ化されたデータをデータベースに効率的に一括挿入するにはどうすればよいですか?

C# でパラメータ化されたデータをデータベースに効率的に一括挿入するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-03 21:18:09
オリジナル
991 人が閲覧しました

How Can C# Efficiently Bulk Insert Parameterized Data into a Database?

C# を使用してパラメーター化された変数をデータベースに一括挿入する

多数のパラメーター化された変数をデータベースに効率的に挿入することは、開発者が直面する一般的な課題です。 C# は、テーブル値パラメーターとストアド プロシージャを使用して、単一のクエリに複数の行を挿入するソリューションを提供します。

ユーザー定義のテーブル タイプの作成

まず、ターゲットデータベースの構造をミラーリングするユーザー定義のテーブルタイプtable:

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
GO
ログイン後にコピー

ストアド プロシージャの定義

次に、新しく作成したテーブル タイプを入力パラメータとして受け入れるストアド プロシージャを作成します:

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

このストアド プロシージャは、@MyTable テーブル タイプのデータを、

C# からのストアド プロシージャの実行

最後に、次のコードを使用して C# からストアド プロシージャを実行します。

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

テーブル値を使用する利点パラメータ

テーブル値パラメータを使用すると、次のような利点があります。

  • 効率的: 単一のクエリで複数の挿入ステートメントが置き換えられ、パフォーマンスが大幅に向上します。
  • パラメータ化: データはパラメータ化された方法で渡されるため、 SQL インジェクション攻撃のリスク。
  • 拡張性: ユーザー定義のテーブル タイプは、ストアド プロシージャを変更せずに、さまざまなシナリオに合わせて変更できます。

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

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