プロが教えるわが家の防犯対策術!

VS2005を使用してウェブアプリを作成しています。
アプリ内でDBに接続しているのですがローカル環境で開発しているときとウェブサーバで検証する時とで都度接続文字列を変えてWebServiceをアップロードしているのですが動的に判断して適切な接続文字を選択するようにすることは出来ないものでしょうか

開発環境:WINXP VS2005 .NET 2.0

処理の概要は以下です
dim conn as string = DB接続文字列 ・・・この部分を動的に変えたい
dim cmd as string = SQL文字列
dim adapter as new OleDbDataAdapter(cmd,conn)


といった感じです。
良いアイディアがありましたら教えてください

A 回答 (5件)

 global.asaxやそれに類する適当な設定ファイルに接続文字列を書いてアップロードの時にそのファイルをアップロードしなければ良いのではないんでしょうか。

    • good
    • 0
この回答へのお礼

ありがとう御座います。
ご指摘いただいた方法だと後からDB接続先を確認するときに
別のファイルを開き、分岐の条件を確認し・・・ということに
なるのではないかと思い敬遠していました。

お礼日時:2008/05/11 13:02

こんばんは。



違う接続文字列で接続した場合にエラーになるのであればエラー処理を利用するというのはどうでしょうか。

例えば、とりあえずローカル環境の接続文字列で接続してみてエラーになったらウェブサーバということになるのでそちらの接続文字列で接続する、というようにするとか。(逆でもいいでしょう。)

Try
'ここにローカル環境での接続処理を書く
Catch ex As Exception
'ここにウェブサーバでの接続処理を書く
End Try

ただし、DB接続以外のエラーがないことが条件です。
    • good
    • 0
この回答へのお礼

ありがとう御座います。
目に見える範囲で接続先を制御できるので私のイメージに一番近い解決法に思いました。
catchの中にもう一回try,catchを入れておけばDB以外のエラーを拾うようにしようと思います。

お礼日時:2008/05/11 12:59

状況が良く分からないのですが、接続先を動的に変更するには


昔からある方法として、以下のものがあります。
(1)初期化ファイル(*.ini)を使う。
(2)環境変数を使う。
尚、あまり勧められませんが、接続文字列で異なる所はSEREVRディレクティブの場合が多いので、
マシン名は同じにしておいて、名前から得られるIPアドレスを、ローカルと実サーバでは別に
設定するといった方法も考えられます。

経験的に見ると、昔は(2)が多かったのですが、最近は(1)の方が圧倒的に多いようです。
    • good
    • 0
この回答へのお礼

iniファイルを使用した場合、実行環境がローカルであるか公開されているウェブサーバー上であるかを動的に判断するのではなく、「ローカルのiniファイルと公開環境のiniファイルを別々に記述して更新しない」という理解でよいでしょうか?

お礼日時:2008/05/11 12:56

Iniの話が出ているので補足を。


WinAPI:GetPrivateProfileStringは、Iniを扱うプログラムを組んだ事が
ある人なら、まず間違いなく憶えがあるAPIだと思いますが、
VB6までのVBと、VB.NETとでは定義が違います。
以下のページが詳しいと思うので、ご参考に。
全部理解しようとすると、少しややこしいですけどね。
(無理やりVB6までと同じやり方をすると、私の経験では最初の1回目の
 使用しか うまく動作しない、などという現象が発生しました)

参考URL:http://www5b.biglobe.ne.jp/~yone-ken/VBNET/speci …
    • good
    • 0
この回答へのお礼

ありがとう御座います。
正直ご指摘の内容を把握するレベルまでいたっていないので、参考URLを元に勉強しようと思います。

お礼日時:2008/05/11 12:53

えーと、今更なのかもしれませんが、思い出したことがあったので、一応。


VS2005であれば、My.Settingを使用するのが、いちばん簡単なのかもしれません。
これを使用した際の設定情報は、App.config(コンパイルしたら、xxx.exe.config
だったかな?)に書かれ、中身はXMLなのでテキストエディタで変更可能です。
My.Settingの使用法については、ググったら一杯あるようなので、そちらを
参照してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!