- - PR -
同時に複数テーブルを更新するには?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-08 11:46
VB.NETでSpeadSheetでWeb開発をしています。
1つのSpreadSheetにはA,B,Cという3つのカラム(列)があります。 この3つのカラムは全て異なるテーブルのカラムです。 同時にこれら3つのテーブルを更新する方法はありますか? カラムが全てひとつのテーブルの場合は下記のようなサンプルがあったのですが。 ' 変更内容をデータセットに反映します。 Dim ds As System.Data.DataSet = FpSpread1.ActiveSheetView.DataSource (途中略) ' 変更内容をデータベースに反映します。 Dim n As Integer = OleDbDataAdapter1.Update(ds, "Order") | ||||||||
|
投稿日時: 2003-09-09 14:31
これはひとつのSQLで複数のテーブルを更新したい ということであっているでしょうか? 私は.NETに関しては詳しくないですが、DBの性質上それは無理だと思います。 複数のテーブルを更新したいならテーブル分のSQLを書いてやる必要があります。 私の勉強不足でそういう方法が存在したら申し訳ありません。 でも、もし1SQLで複数テーブルの更新があったとしても、 1SQLづつ更新するより、はるかにレスポンスは落ちると思われます。 ほとんどのプログラムがDBありきといっても過言ではありません 文面を見る限りDBが多少なりとも関係するプログラムを扱っておられるようなので DBに関しては一度勉強してみる事をお勧めいたします | ||||||||
|
投稿日時: 2003-09-09 15:07
SpeadSheetでできるのかどうかはわかりませんが、通常はこのような場合、
トランザクションを発行して3つの更新SQLを発行し、成功すれば最後に Commitを発行します。(失敗の場合はRollBack) DB内ではcommitが発行されれば更新が反映されますから、見かけ上3つの テーブルに同時に更新がかかったように見えます。 | ||||||||
|
投稿日時: 2003-09-09 15:20
PoHさんのおっしゃるとおりだと思います。。。。。。
が、私はこのスレッドを見て考えたのは、 DataAdapterのUpdateCommandプロパティに通常、
と設定すると思いますが、
このように、;とかで区切ったりして複数のSQLを発行する事は仕様としてありえなくはないなぁ、と思ったりしました。 データプロバイダによってはできるかもなあと。勿論、そこまでの知識はないのでレスしなかったのですが。 #PoHさんの最後のアドバイスには大賛成です。 | ||||||||
|
投稿日時: 2003-09-09 15:34
Oleのほうはどうか分かりませんが、少なくともSqlDataAdapterでは、
ハヤさんが書かれているように複数のSQLを一つのコマンドに設定し、 SqlDataAdapter.Update()で一括更新というのはできます。 そのほうが、Updateが一回で済むので楽だと思います。 OleDataAdapterでできなかったらすみません。 | ||||||||
|
投稿日時: 2003-09-09 15:42
私もC#は素人同然なので出来るかどうかは分からなくて申し訳ないですが SQL投げてるんだから出来そうな気がしますよね。 コーディングもハヤさんのような形で 見やすく書いていただければ問題ないのではないでしょうか? ただひとつ目のUPDATE文がエラーだった場合や ステータスを取得したい場合等が問題になりそうですね。 他のSQL文ならハヤさんの言う方法がアクセスも速そうですね。 一度試してみよっと |
1