0

まず、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;
4

1 に答える 1

0

GetAllCandidatesByDates()では、おそらく次のようにする必要があります。

FORM_SUBMISSION_DATE + "BETWEEN @initialDate AND @finalDate"

次にinitialDate、「@ initialDate」パラメーターと「@finalDate」パラメーターにバインドしfinalDateますか?現在のように、これらの日付のパラメーターを使用するのではなく、具体的なDateTime値を文字列に変換し、これらの文字列を最終的なSQLに直接連結します。

于 2011-07-18T15:20:32.773 に答える