我有一个使用具有相同参数的子查询的查询,所以它看起来像这样:
strSelect = _
"SELECT a.State, a.FirstName, a.LastName, b.JobTitle " & _
"FROM apples a " & _
"LEFT JOIN ( " & _
"SELECT a.RecordNumber, " & _
"CASE WHEN j.JobTitle IS NULL THEN j.JobTitle2 ELSE j.jobtitle END " & _
"FROM apples a " & _
"LEFT JOIN jobs j ON j.RecordNumber = a.RecordNumber " & _
strWhere & _
") b ON b.RecordNumber = a.RecordNumber "
strWhere = _
"WHERE a.JobState = ? " & _
"AND a.JobDate = ? "
现实生活中的子查询与示例中的子查询相比毫无意义。
这里的问题是,如果我重复strWhere
,那么有没有办法让参数适用于生成的strSQL = strSelect & strWhere
语句?问题是我有两个参数,但它们是重复的,所以strSQL
语句会有四个参数,但我宁愿在申报时不重复我的参数。
我有一种感觉,我错过了一些非常明显的东西。有什么建议吗?
答案 0 :(得分:1)
您应该使用命名参数:
尝试使用命名参数,例如:
WHERE a.JobState = @JobDate
和
AND a.JobDate = @JobDate
然后,当您添加参数时,您只需要添加一次。它看起来像这样:
SqlParameter param = new SqlParameter();
param.ParameterName = "JobDate";
param.Value = theDate;