0

首先我给出两种方法的例子

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;
    }

我已经注释掉了

这里的大写术语都是类中上面的所有常量,例如

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 也被正确定义。我完美地使用了这个层。但是现在发生了一种情况,我对该怎么做感到困惑。到目前为止,我一直在添加具有一对一关系的参数的值。但是,在我的第二种方法中,我使用 between 运算符,其中两个值引用一个参数,我将在这里写什么以使事情正常工作。我已经注释掉了我想要修改的特定区域。如果可能,请帮助我。下面是方法 GetSQLParameters public static 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 回答