私のC#アプリは、コードスペースを乱雑にする多くの定型文を使用して多くのクエリを実行することがわかりました。また、繰り返しを避けたいのですが、これを一般的に行うためのメソッドをどのように作成できるかわかりません。
ODPを使用してOracleデータベースにアクセスしています。データウェアハウスの担当者が主キーの指定を拒否しているため、Linqを使用できません。また、LinqのODPサポートは、そうですね...彼らはむしろプラットフォームを使用してもらいたいと考えています。
すべてのクエリが異なるタイプの異なる数を返すため、実際にはリストを返すことはできません。
string gufcode = String.Empty;
double cost = 0.0;
OracleCommand GUFCommand2 = thisConnection.CreateCommand();
String GUFQuery2 = "SELECT GUF_ID, COST_RATE FROM SIMPLE_TABLE";
GUFCommand2.CommandText = GUFQuery2;
OracleDataReader GUFReader2 = GUFCommand2.ExecuteReader();
while (GUFReader2.Read())
{
if (GUFReader2[0/**GUF_CODE**/] != DBNull.Value)
{
gufcode = Convert.ToString(BUFReader2[0]);
}
if (GUFReader2[1/**COST_RATE**/] != DBNull.Value)
{
cost = Convert.ToDouble(GUFReader2[1]);
}
effortRatioDictionary.Add(bufcode, percentageOfEffort);
}
GUFReader2.Close();
しかし、実際にはもっと多くの用語とこのようなクエリがたくさんあります。私は15かそこらのクエリを言うでしょう-15かそこらのフィールドが返されるものもあります。
この定型文をどこにでもコピー/貼り付けすると、多くの問題が発生します。たとえば、コピー貼り付けのすべてを更新しないと、間違ったリーダーを閉じて(またはさらに悪いことに)データベースに別のクエリ文字列を送信します。
私はこのようなことをしたいと思っています:
string gufQuery = "SELECT GUF_ID, COST_RATE FROM SIMPLE_TABLE";
List<something> gufResponse = miracleProcedure(gufQuery, thisConnection);
そのため、ボイラープレートのほとんどがなくなります。
シンプルなものを探しています。