- PR -

処理は同じで使用データベースが違う場合に。

投稿者投稿内容
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2007-12-18 17:04
引用:

処理内容はまったく同じで、参照するデータベース、サーバが違うだけなので


とのことですが、
コード:
if(パラメータX == "A") {
  sqltxt = "SELECT * FROM テーブルA";
}

if(パラメータX == "B") {
  sqltxt = "SELECT * FROM テーブルB";
}


の部分は「データベース、サーバが違うだけ」ではなく、テーブルの
違いを判別していますよね。
お聞きになりたいのはどちらでしょうか。


私は、テーブルの違いをプログラムソースコードですっきり判別
したい、という質問だとしてのお答えをしますね。

引用:

このような形で、SQL文を作成する際に条件分岐をする以外方法はないでしょうか?
この処理で動いているので問題はないのですが、
もっと良い方法があるのではないかと思い、みなさんのご意見を伺いたく投稿しました。



普通の条件分岐ではない、手の込んだ方法として、
デザインパターンの
Builderパターン
Factory Methodパターン
Strategyパターン
などで書き換えたりすることができます。
が...
これらを適用することによって読みにくくなることが少なく
ないので、特別に目的がなければ、特にお勧めするわけではありません。
まずは、これらのキーワードを一度調べてみてはいかがでしょう。
直接これらを使うことはなくても、技法的な面からも目から
うろこが落ちること必至です。
なにかひらめくかもしれないです。

私は、そのプログラムの目的が、よりすっきり書けている方が、
手の込んだものよりよいと思っています。
よい方法が無いかと、いろんな手段で書いてみようとするのは
とてもよいことだと思います。
がんばってください。

_________________
たつごろー
codeseek
こみゅぷらす
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2007-12-18 17:23
引用:

データベースが違ってもテーブル名だけ同じならSQL作成時に迷わないのですが
テーブルが違うためにどうしようか考えてしまいました。


参照系のみなのであればDBのview使って解決する方法が楽だと思います。
ifで分岐するのであれば、configファイルにSQL書くとか。

あ、フィールド名は同じという前提でよいですよね?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-12-18 19:16
引用:

Ahfさんの書き込み (2007-12-18 15:23) より:

私が好むのはメソッドの中で環境判断して分岐、というよりは環境の数だけ
メソッドやクラスを作るという方向でしょうかね。
それで実行時に作るインスタンスを変更するだけにする、と。


これは私も良くやります。 ロジックが同じなら Interface (実装) さえ統一できていれば良いわけですから非常に便利であります。

# とある会社は 「継承」 を使っているらしいですが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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