ホームページ > バックエンド開発 > C++ > C# でパラメーター化されたクエリを使用して複数の行を効率的に挿入するにはどうすればよいですか?

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

DDD
リリース: 2025-01-01 04:54:10
オリジナル
527 人が閲覧しました

How Can I Efficiently Insert Multiple Rows with Parameterized Queries in C#?

C# での単一クエリによる複数のパラメータ化された行の挿入

パラメータ化されたクエリを使用すると、開発者は値をハードコーディングせずに SQL ステートメントを実行できるため、SQL が実行されなくなります。インジェクション攻撃とパフォーマンスの向上。パラメータ化された値を含む複数の行を挿入すると、特に多数の行を使用する場合に効率的です。

提供されたコードでは、各行が個別に挿入されるため、時間がかかる可能性があります。これに対処するには、SQL Server 2008 以降でテーブル値パラメータを利用できます。

テーブル値パラメータの作成

まず、ユーザーを作成します。データの列を定義する定義済みのテーブル タイプ:

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

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

次に、テーブル値パラメータを受け入れるストアド プロシージャを作成します。

CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY 
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2 
FROM @MyTable

GO
ログイン後にコピー

テーブル値パラメータは必ず READONLY としてマークされていることに注意してください。

ストアド プロシージャをDataTable

最後に、DataTable を使用して 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();
    }
}
ログイン後にコピー

テーブル値パラメーターを使用すると、単一のパラメーター化されたクエリで複数の行を挿入できます。パフォーマンスの向上。

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

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