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

C# および SQL Server でパラメータ化された一括挿入を効率的に実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-30 22:17:10
オリジナル
810 人が閲覧しました

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. DataTable にデータを追加します:

    • 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 中国語 Web サイトの他の関連記事を参照してください。

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