R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

TableAdapter で悩む

いろいろと理由があって僕は

TableAdapter

 を自分で書いていました。

しかし、毎度毎度作って管理するのも面倒くさいので DataSet のデザイナで自動生成された TableAdapter を使おうと現在試行錯誤しています。

取りあえず、最初に躓いたのが接続文字列です。

例えば、設定画面で接続に必要な諸々のデータを登録して、これに基づいて接続文字列を生成して接続するというような場合の対応方法で悩んでいます。

取りあえず思いついた方法は、以下の2つ。
ちなみに、まだ動作確認はしていません。

 

(1) Partial Class で接続文字列のプロパティを追加
DataSet のデザイナをダブルクリックすると生成される HogeHogeDataSet.cs というファイルに次のように記述してあげる方法です。


namespace RSoftware.HogeHogeDataSetTableAdapters {
  public partial class HogeHogeTableAdapter
  {
    public string ConnectionString {
      get {  return this.Connection.ConnectionString; }
      set {  this.Connection.ConnectionString = value; }
    }
  }
}


Connection プロパティに初回アクセスすることによって、Connection オブジェクトが生成されるので、このような書き方で接続文字列は変更される筈です。
しかし、この方法だと HogeHogeTableAdapter を使用する度に、使用する側で、毎回接続文字列を設定してあげる必要があります。

・・・しかし、今気付いたんですが、上記のように書かなくても、使用する側で直接Connection.ConnectionString = "独自な接続文字列"  としてあげれば良いんじゃないだろうかw

 

 

(2) HogeHogeTableAdapter を継承して Connection プロパティを new
これも、DataSet のデザイナをダブルクリックすると生成される HogeHogeDataSet.cs というファイルに次のように記述してみます。


namespace RSoftware.HogeHogeDataSetTableAdapters {
  public class HogeHogeTableAdapter2 : HogeHogeTableAdapter
  {
    internal new global::System.Data.OleDb.OleDbConnection Connection {
      get {
        base.Connection = "ここで直接指定する";
        return base.Connection;
      }
      set { base.Connection = value; }
    }
  }
}


これなら、HogeHogeTableAdapter を使用する側は、接続文字列を気にしなくて良いのですが、継承した方を常に使うように意識しなければなりません。

うーん、ほかに何か良い方法は無いものだろうか・・・

投稿日時 : 2007年7月18日 13:26

Feedback

# re: TableAdapter で悩む 2007/07/18 13:44 えムナウ

TableAdapter の ConnectionString はDataSetデザイナで TableAdapter を選択するとプロパティで変更可能ですが、通常(Default)はアプリケーションSettingsのConnectionString に設定されています。
あと、WebだとWeb.Configなんかにありますね。

こちらを変更可能なユーザーSettingsに切り替えてしまえばConnection プロパティに初回アクセスする前であれば変更可能でDefaultは変更可能なSettingsを参照しますよね。

# re: TableAdapter で悩む 2007/07/18 15:35 R・田中一郎

えムナウさん

DataSet デザイナから、接続文字列を切り替えることはできるのですが、ユーザーSettings に切り替える方法というのがあるのでしょうか?

# re: TableAdapter で悩む 2007/07/18 16:13 えムナウ

プロジェクトのプロパティから設定タブで アプリケーションSettingsのConnectionString を確認します。
型をstring、スコープをユーザー、値を表示されているXMLの「Data Source=localhost;Initial Catalog=Sample;Integrated Security=True」こんなのだけ残せば出来上がり。

# re: TableAdapter で悩む 2007/07/18 17:38 R・田中一郎

えムナウ さん

うーむ、この方法も実は試したことがあるのですが、この設定後には、DataSet のデザイナが変更できなくなってしまうんですよね。
変更するときだけ、接続文字列を元に戻すという方法もあるのですが、この辺りは、どんな感じで対応していらっしゃいますか?

# re: TableAdapter で悩む 2007/07/18 18:37 えムナウ

そんな感じ。

# re: TableAdapter で悩む 2007/07/18 18:38 えムナウ

>変更するときだけ、接続文字列を元に戻す
名前を変えてバックアップは取っておけって。

# re: TableAdapter で悩む 2007/07/19 12:04 R・田中一郎

えムナウ 先生

いつも、ありがとうございます。

>そんな感じ。

なるほど、やはり変更する時に戻すという方法が良いのですね。
今回は、いろいろ悩んだので、今日の話題としてまとめておこうと思います。

# 実行時に接続文字列を変更する 2007/07/19 12:07 R.Tanaka.Ichiro's Blog

実行時に接続文字列を変更する

# 実行時に接続文字列を変更する 2007/07/19 12:07 R.Tanaka.Ichiro's Blog

実行時に接続文字列を変更する

タイトル  
名前  
Url
コメント