我试图执行参数化SQLCommand,它应该返回1值。相反,它返回一个空集,没有抛出异常,程序只是继续前进。SQLCommand不返回任何东西
这是查询:
SELECT SUM(s.cost) AS cost
FROM Spending s JOIN Date d ON s.dateID = d.dateID
JOIN [Service category] sc ON s.[service categoryID] = sc.[service categoryID]
WHERE sc.category1 = 'Phone' AND s.personID = @person
AND d.month = @month AND d.year = @year
C#代码如下:
SqlCommand commandSelect = new SqlCommand(query, conn);
foreach (string[] p in pars)
{
commandSelect.Parameters.AddWithValue("@" + p[0], p[2]);
}
SqlDataReader res = commandSelect.ExecuteReader();
在有3个参数传递,并且当我在调试器检查的SqlCommand,它们被正确地传递。 @person是一个字符串,其他两个是整数。
任何帮助,将不胜感激。
编辑: 我可能还要补充标准杆阵列的stucture:
pars[0][0] = "person"
pars[0][2] = "'IDString here'"
pars[1][0] = "month"
pars[1][2] = "2"
pars[2][0] = "year"
pars[2][2] = "2012"
可能是字符串大小写与查询中提供的大小写不同 – Habib
在调用ExecuteReader的行上设置一个断点,接受命令文本,通过SSMS运行它。当你通过SSMS运行这样的查询时,你会得到任何结果吗? –
命令文本与查询相同。是否有另一个属性将实际值替换为参数名称? – kyooryu