メモってこ!

IT関連系のあれやこれ

データを一括で更新する(C#からSQLServerの更新)

  • 書いたきっかけ
  • 前提事項
  • 使い方
  • そのほか

 

■書いたきっかけ

一括updateが一括insertのようにスマートにできず、

パフォーマンス改善に悩んで使用した。

一括で取得したデータをC#側でコード処理、既存データにupdateかけたかった。

 

■前提事項

使用しているのはC#SQLServerである。

 

■使い方

DataTable型データをSQL実行時にstruct型で引き渡す。

テーブルとして使用ができるのでjoinしてupdateSQLを発行する。

string sql = "";
sql += " UPDATE t SET x = 'XX' FROM test t ";
sql += " INNER JOIN @tmptable tmp ON t.xxx = tmp.xxx "
 
SqlParameter param2 = new SqlParameter
("@tmptable", SqlDbType.Structured, updateTmptable);

 

使用方法としては↑だが、実際に実行するには事前にSQLServer側にTableTypeを作成しておく必要がある。

 

itblog.dynaspo.com

 

実行前に確実に作成しておきたい場合は、以下と組み合わせればよい

 

note.mokuzine.net

 

■そのほか

〇参考

itblog.dynaspo.com

 

↓は採用しなかったが、使えそうなもの

freeit.hatenablog.com