まず、2つの方法の例を示します
public static List<FormGridEntity> GetAllCandidatesByProgram(string programShortName)
{
List<FormGridEntity> formGridEntities = null;
try
{
string cmd = SELECT + " WHERE " + CANDIDATE_PROGRAM_PA + " = " + CANDIDATE_PROGRAM;`enter code here`
//string cmd = SELECT
DAOParameters dps = new DAOParameters();
dps.AddParameter(CANDIDATE_PROGRAM_PA, programShortName);
List<SqlParameter> ps = Common.Methods.GetSQLParameters(dps);
SqlDataReader dataReader = QueryHandler.ExecuteSelectQuery(cmd, ps);
formGridEntities = Maps(dataReader);
dataReader.Close();
}
catch (Exception exception)
{
throw exception;
}
return formGridEntities;
}
そして別の方法は
public static List<FormGridEntity> GetAllCandidatesByDates(DateTime initialDate,DateTime finalDate)
{
List<FormGridEntity> formGridEntities = null;
try
{
string cmd = SELECT + " WHERE " + FORM_SUBMISSION_DATE_PA + " BETWEEN " + initialDate + " AND " + finalDate;
//string cmd = SELECT
DAOParameters dps = new DAOParameters();
//What will I do here? since
**//dps.AddParameter(FORM_SUBMISSION_DATE_PA, initialDate);
//dps.AddParameter(FORM_SUBMISSION_DATE_PA, finalDate);**
List<SqlParameter> ps = Common.Methods.GetSQLParameters(dps);
SqlDataReader dataReader = QueryHandler.ExecuteSelectQuery(cmd, ps);
formGridEntities = Maps(dataReader);
dataReader.Close();
}
catch (Exception exception)
{
throw exception;
}
return formGridEntities;
}
コメントアウトしました
ここで、caps項は、上記のクラスのようなすべての定数です。
private const string FORM_PURCHASING_DATE = "DateOfPurchase";
private const string FORM_PURCHASING_DATE_PA = "@DateOfPurchase"
private const string FORM_SUBMISSION_DATE = "DateOfSubmission";
private const string FORM_SUBMISSION_DATE_PA = "@DateOfSubmission";
SELECTも正しく定義されています。私はこのレイヤーを完璧に使用しています。しかし今、私が何をすべきか混乱しているシナリオが発生しました。これまで、1対1の関係を持つパラメーターを使用して値を追加してきました。しかし、2番目の方法では、2つの値が1つのパラメーターを参照している間演算子を使用しています。これを正しく機能させるために、ここに何を記述しますか。変更したい特定の地域をコメントアウトしました。できれば助けてください。これがメソッドGetSQLParameterspublicstatic List GetSQLParameters(DAOParameters dps){List parameters = new List();です。
foreach (DictionaryEntry de in dps.hs)
{
SqlParameter p = new SqlParameter();
p.ParameterName = de.Key.ToString();
if (de.Value.ToString() == Convert.ToString(0))
{
p.Value = DBNull.Value;
}
else
{
p.Value = de.Value;
}
parameters.Add(p);
}
return parameters;