【发布时间】:2020-11-30 18:19:51
【问题描述】:
这似乎是我的参数名称的明显拼写错误,但我无法发现它。错误信息是:
必须声明标量变量“@SelectedDepartment”
代码:
using Microsoft.ApplicationBlocks.Data;
using (SqlConnection batConnection = new SqlConnection(batConstr))
{
string actualsQuery = "SELECT * FROM Budget WHERE CostCenter = @SelectedDepartment AND Year = @SelectedYear";
using (SqlCommand actualsCommand = new SqlCommand(actualsQuery, batConnection))
{
actualsCommand.CommandType = CommandType.Text;
actualsCommand.Parameters.AddWithValue("@SelectedDepartment", budgetsActuals.SelectedDepartment);
actualsCommand.Parameters.AddWithValue("@SelectedYear", Convert.ToInt32(budgetsActuals.SelectedYear));
batConnection.Open();
ds = SqlHelper.ExecuteDataset(batConnection, CommandType.Text, actualsQuery);
}
}
我已经调试了代码并且可以确认数据库连接良好并且模型具有填充参数的值。我错过了什么吗?
【问题讨论】:
-
我不熟悉
SqlHelper.ExecuteDataset,但我没有看到你在调用它时使用了SqlCommand。 -
我猜你应该将查询的参数传递给 ExecuteDataset 方法。如果我没记错的话,它应该还有一个参数。也。
-
我们不知道
SqlHelper.ExecuteDataset做了什么。我会从它的外观假设它是一个静态函数。目前,它对您构建连接、命令等根本没有帮助。老实说,此时您可以摆脱该调用,只需使用DataAdapter并填写DataSet。另一方面,我会在您的类(可能是Budget)中创建一个辅助函数,该函数利用SqlHelper类进行此类调用并返回您需要的数据。此外,您的连接也应该在完成后处理掉。 -
ExecuteDataset(batConnection, CommandType.Text -
感谢@LasseV.Karlsen。我认为这就是问题所在。
标签: c# sql-server asp.net-mvc ado.net