とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

接続文字列(ConnectionString)を動的に変更するには?

.NETアプリケーション開発において
DataGridViewを使ってデータベースの情報を表示することは多いです。

開発時と実行時に接続文字列を分けたいけど
デザイナ画面でデータソースを作成してしまうと
ConnectionStringを変更できない事に気づいた。

自動生成させる接続文字列とは別に、実行時にユーザーのインプットによって
接続先を変更したり、アカウント、パスワードを切り替えたりしたいことはあるはず。

仕方なくDataSetを使わずに自前で
TableAdapterやSqlCommandクラスを使って実装したけど
後々になって方法が分かったのでメモしておきます。

スコープの変更


データ接続ウィザードを利用して接続用オブジェクトを作成すると
標準ではsettingsファイルに接続文字列ができあがります。

settingsファイルが作成されるということは
C#でのコード上からは
Properties.Settings.Default.xxxxConnectionStringとしてアクセスできるんだけど
スコープがApplicationになっているので読み取り専用になってます。

20130322_error.png



デザイナを開いてもスコープ列が固定化されており変更できません。

settingsをデザイナで表示

というわけで、接続文字列を変更する方法がないかと調べたところ
やっぱりあるみたい。

ConnectionStringを変更可能にする


まずはSettings.settingsファイルを
右クリック、ファイルを開くアプリケーションの選択、
XML(テキスト)エディターで開いて・・・

xmleditor

<Setting Name="NewDBConnectionString" Type="(Connection string)" Scope="Application">
の"Application"の部分を"User"に変更


こうすることで

アプリケーションスコープだった接続文字列がユーザースコープに。(ドヤァ)

ユーザースコープに変更

自動生成されていたxxxxConnectionStringプロパティにもsetアクセサが生成されています。

xxxxConnectionString

接続文字列(xxxxConnectionString)が自動生成されたDataSetで初利用されるのは
Connectionメソッドが呼ばれる時なので、それまでにユーザーコードによって
接続文字列を動的に変更しておきましょう。


それにしてもどうして標準ではスコープの切り替えができないのでしょうか?

▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/66-db2e2356
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad