メイン

2006年12月14日

ADO.NET TableAdapterの接続文字列を動的に変更したい

少し前に.NET Framework(C#)でDBクライアントアプリケーションを開発したときのこと。

ADO.NETを使うと、データベースアクセスまわりのコードもVisual Studioがいろいろと自動生成してくれてとっても楽チンです。
ですが、このアプリケーションは任意のユーザに配布される可能性があり、SQL Serverへの接続文字列について、下記の要件を満たす必要がありました。

  • 接続ユーザ、パスワードは固定。ただし、パスワードはexe.configには書きたくない。
  • 接続ホスト名のみ、ユーザがexe.configファイルで変更できるようにする。

つまり、exe.configファイルを読み込み、接続文字列を動的に変更する必要がありました。
いろいろ調べた結果、「わんくま同盟」さんの勉強会資料を参考に、以下の方法で解決できました。

  • ビジュアルエディタ上でTableAdapterのプロパティを設定するときは、とりあえずはダミーの接続文字列を設定しておく。
  • データアクセスを管理するTableAdapterクラスごとにPartialクラスを定義する。
  • Partialクラス内でカスタムクエリメソッドを定義する。
  • カスタムクエリメソッドの先頭で、接続文字列を動的に生成して置き換える。
  • this.Connection.ConnectionString = <動的に生成した接続文字列>

C#のPartialクラスを利用すると、このようにVisual Studioが自動的に生成するクラスを、別ファイルに分けて実装をカスタマイズできるのでいろいろと便利ですね。

(参考)わんくま同盟 大阪勉強会#2
http://www.wankuma.com/seminar/20060804osaka2tokyo1/4.ppt