|
■No59802 (田村 さん) に返信
> Updateメソッド方式もあまり変わらなかったです。
もしかして、DataAdapter(TableAdapter) の Update メソッドを使ったのでしょうか?
その時に、引数に SELECT した DataTable を渡してはいませんか?
追記のみの作業において DataTable を経由させるのは、効率が悪いです。
■No59790 (Mira さん) に返信
> データーあるなし関係なしにInsertを実行しエラーが出た時だけUpdateを実行すれば
逆にした方が良いと思いますよ。つまり、UPDATE → INSERT の順です。
たとえば、
CREATE TABLE TEST (
COL1 INT PRIMARY KEY,
COL2 VARCHAR(10)
)
だと仮定して、ここに 「100, 'TEST'」という行を登録する場合、
(1)「UPDATE TEST SET COL2 = 'TEST' WHERE COL1 = 100」を実行する。
(2) 影響を受けた行数が 1 件だったら更新完了。0 件だったら次の(3)を実行。
(3)「INSERT INTO TEST (COL1, COL2) VALUES (100, 'TEST')」を実行する。
という流れにするわけです。これなら重複登録のエラーを気にする必要もありません。
なお、手順(2) の影響を受けた行数は、SqlCommand.ExecuteNonQuery メソッドの戻り値で得られます。
(TableAdapter の Insert/Update メソッドの戻り値でも可)
|