0

私はWinFormsデスクトップアプリケーションで作業しています。このアプリケーションでは、SQL Serverデータベースに関するいくつかの更新を行う必要があります。私は、テーブルパラメータテーブルパラメータを持つ単一実行ストアドプロシージャまたは分離パラメータを持つ複数実行プロシージャを使用する必要がありますか?

comm.CommandType = CommandType.StoredProcedure; 
comm.Parameters.AddWithValue("@changes", changes.ToTable(false, "ItemNo", "Info")); 

でストアドプロシージャでそれこれを行うと、一度だけ、またはループで文字列パラメータと手順複数回を実行手順を実行することができます。

for (...) 
{ 
    ... 
    comm.CommandType = CommandType.StoredProcedure; 
    comm.Parameters.AddWithValue("@Item", "Item 1"));` 
    comm.Parameters.AddWithValue("@Info", "Info 1"));` 
    int i = comm.ExecuteNonQuery(); 
    ... 
} 

これを行うのがベストプラクティスですか?

+0

ストアドプロシージャ内で何をしているのかを知ることが重要です。いくつかのレコードの挿入/更新だけの場合は、ストアドプロシージャを使用せず、適切に記述されたパラメータ化されたクエリ(必ずしもAddWithValueを使用しません) – Steve

+0

ストアドプロシージャには複雑な操作は含まれていません。アプリケーションのレイヤーを分離した状態にするために、アプリケーション内でSQLクエリを使用しないので、私の場合はあなたの提案が役に立たない。 – Adnand

+1

また、XMLを渡してバッチとして更新することもできます。 –

答えて

1

単純なUPDATE操作を実行していても、最初のアプローチですべてのデータをテーブルタイプ変数として送信します。

この場合、テーブルタイプ変数でJOINを実行してupdate-joinを実行し、複数のレコードを一度に更新することができます。少なくとも、DBへの複数の呼び出しを保存します。

関連する問題