首先我給的兩種方法問題在C#中的數據訪問層添加SQL paramerters
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;
}
我已經commentd了
這裏帽條款是所有常數,以上類似
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;
我很困惑,一個參數的兩個值?你的意思是如果某個值適用於你改變參數值? – developerdoug
在sql查詢中沒有關於操作符之間的事情,這裏使用兩個值作爲一個列值的邊界。 – Pankouri
你能顯示Common.Methods.GetSQLParameters()方法的代碼嗎? – sll