読む

2012-04-02 11 views
2

私は私の経験のほとんどは、昔ながらのC.読む

である私は、多くのアクセスのいずれかから情報を検索しますC#でアプリケーションをコーディングしようとしています、C#でコーディングに新しいですデータベース。各データベースは、同じテーブル(データベース自体(PIC、PICenumなど)に適切な名前が付けられています)が似ています。各データベースの同じテーブルには、同じフィールド名(LnetVar、Descriptionなど)が含まれています。各データベースは、他のデータベースとは異なる別のデータセットに適用されます。そのため、すべてのデータベースをカバーするのではなく、複数のデータベースを使用しています。それはまた、それをずっと容易に維持する。

私は現在、特定のデータベースにアクセスし、コード内の他の場所で使用するために必要なデータを引き出すコードを持っています。

class DB_Handler 
{ 
    lsftTestDataSet.PICDataTable ds; 

    public DB_Handler(lsftTestDataSet.PICDataTable ds) 
    { 
     this.ds = ds; 
    } 

    public string GetDescription(byte lnetVar) 
    { 
     foreach (lsftTestDataSet.PICRow currentRow in ds) 
     { 
      if (currentRow.LnetVar == lnetVar) 
      { 
       return currentRow.Description; 
      } 
     } 

     return ""; 
    } 
} 

私は古いコピーアンドペースト - 修正トリックを各データベースとやり取りできるようにしたくありません。むしろ、私は使用したいデータベースと関連するレコードとフィールド情報を送信するという単一の関数を呼び出す必要があります。それから、データベースを検索し、格納されたデータを返します。

私は同様の質問hereを見つけましたが、最適化に焦点を当てていましたが、実際には行っていませんでした。私はまた、私のコードで使用するためにそれを修正するために与えられたコードスニペットに従うことができませんでした。

私に教えていただけるお手伝いをさせていただきます。

+0

'コピー・貼り付け・修正は、おそらく文句を言わないDBアクセスのために責任があるクラスで行うには正しいものになるコンストラクタにデータセットを渡し – mellamokb

+0

ftfy kludge'。このクラスの関数は、プライマリキーの値をパラメータとして取得し、データベースから返されたデータセットベースの結果を返すだけです。 –

答えて

0

あなたが必要としているのは、使用する接続文字列を含むパラメータを受け取るメソッド/関数です。

0

私はこのような何かをするだろう: -

Web.configファイルまたはapp.configを

<connectionStrings> 
<add name="DbConnnectionString" connectionString="server=myserver;database={MyDatabasePlaceHolder};Integrated Security=SSPI;" 
</connectionStrings> 

し、コードで(また、System.Configuration.dllの参照を追加する必要があります)

using System.Configuration; 
class DB_Handler 
{ 
     string connectionString=string.Empty; 
     public DB_Handler(string databaseName) 
     { 
      this.connectionString = ConfigurationManager.ConnectionStrings["DbConnnectionString"].ConnectionString.Replace ("{MyDatabasePlaceHolder}", databaseName) 
     } 

     public GetData() 
     { 
      // Make use of this.connectionString to fetch data 
     } 
} 
+0

私はあなたが推奨する変更のほとんどを行っていますが、有効なエントリとしてConfigurationManagerを認識しません。私は道に沿って重要なステップを逃したのですか? – CraigC

+0

System.Configuration.dllの参照をプロジェクトに追加しましたか?プロジェクト>参照の追加> .NETタブ> System.Configuration.dllを選択して右クリックできます。 –

+0

遅れて申し訳ありませんが、私は参照を追加していませんでした。それは今ポップアップします。ありがとう! – CraigC