@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

【C#】sqlデータベース接続について

1
投稿者投稿内容
mm
会議室デビュー日: 2004/11/02
投稿数: 13
投稿日時: 2004-11-02 18:05
はじめまして。

windowsXP に.NET2003を入れています。
今、c#で、プログラムを作成していますが、分からないことがあります。
それぞれ、違うサーバにsqlデータベースがあり、
片方のテーブルのデータを一部修正したものを、
もう片方のデータベースのテーブルにINSERTしたいと思っています。
こういう場合は、どのようにプログラムを組めばいいのでしょうか?

@まず、元になるDBに接続し、テーブルのデータをSELECTする
AもうひとつのDBに接続し、対象テーブルのデータをDELETEし、
その後、INSERTする。

@でわからないのは、SELECTしたデータをどうしておけばいいのか、ということです。
Aでわからないのは、@のデータをどうやってINSERTするのが効率がいいのか?
ということです。(一括で、INSERTする方法はあるのでしょうか?)

わかりづらい説明になってしまいましたが、よろしくご教授ください。
よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-11-02 18:40
@片方のテーブルのデータを一部修正
AもうひとつのDBに接続し、対象テーブルのデータをDELETEし、 その後、INSERTする。

この2つの処理で1つのトランザクションですか?
mm
会議室デビュー日: 2004/11/02
投稿数: 13
投稿日時: 2004-11-02 19:33
@のデータはデータをselectするだけなので、トランザクション処理は
A対象テーブルのデータをDELETEし、 その後、INSERTするの部分です。
ただ、このとき、INSERTするのは、@でselectした全データなのですが、
そのデータのあるフィールドだけを編集する必要があり、
(数字5桁の文字列を、最初の3桁のみにする)
編集後のデータをINSERTしたいと考えています。

よろしくお願い致します。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2004-11-02 21:20
たぶん一番効率がよく楽なのはSQLのみでやってしまうことのように思えますが何か事情があります?
SQL Server2000だと、リンクサーバーを作って、

コード:

DELETE FROM [table2] WHERE [id] in (SELECT [id] FROM [table1] WHERE ...)
INSERT [table2] INTO SELECT
...
substring([c1], 0, 3) as [c1] /* 編集 */
...
FROM [table1]
WHERE ...



こんな感じで(トランザクションは適当に追加してください)。Oracleにも似たような機能があったような。
mm
会議室デビュー日: 2004/11/02
投稿数: 13
投稿日時: 2004-11-02 22:50
お返事、ありがとうございます。

リンクサーバというのは、SQL上でリンクするような設定が必要ですよね?
できれば、c#のプログラムのみで操作したいのですが、
そういったことも可能でしょうか?
中博俊
ベテラン
会議室デビュー日: 2004/10/17
投稿数: 91
お住まい・勤務地: 大阪市
投稿日時: 2004-11-03 00:04
C#上でリンクサーバの設定をして、処理をして、リンクサーバを削除すればいいですね。
どうしても
C#にこだわるのであれば。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2004-11-03 20:58
コード:
EXEC sp_addlinkedserver ...

DELETE FROM [table2] WHERE [id] in (SELECT [id] FROM [table1] WHERE ...)
INSERT [table2] INTO SELECT
...
substring([c1], 0, 3) as [c1] /* 編集 */
...
FROM [table1]
WHERE ...

EXEC sp_dropserver ...



こんな感じですか?でもリンクサーバーを動的に追加したりする用途が想像できません。
データベースサーバーが動的に増えたりするんですか?
mm
会議室デビュー日: 2004/11/02
投稿数: 13
投稿日時: 2004-11-04 13:46
お返事、ありがとうございます。
SQLの設定を変更したくないと思い、リンクの設定もプログラム上で行おうと思ったのですが、
処理的には、最初からリンクサーバの設定をSQL上にしておいたほうが効率がよいのですよね?
そのように設定して、yaさんに教えていただいたように処理をしようと思います。

もう一点確認したいのですが、このリンクサーバに追加してある状態で、
プログラム上から最初に、リンクの接続の状態が正常かチェックしたいのですが
なにかよい方法はありますか?

よろしくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)