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