运行SQL查询时出现问题
本文关键字:问题 SQL 查询 运行 | 更新日期: 2023-09-27 18:05:44
foreach (DataRow masterRow in dst.Tables["Menu"].Rows)
{
MenuItem masterItem = new MenuItem((string)masterRow["Parentitem"]);
string mp = masterItem.Value;
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@mp";
parameter.SqlDbType = SqlDbType.NVarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = mp;
string q = "select aspnet_PersonalizationPerUser.hasRights
from Menu,aspnet_Users,aspnet_Paths, aspnet_PersonalizationPerUser
where Menu.Parentitem=@mp and Menu.Url = aspnet_Paths.Path
and aspnet_Paths.PathId =aspnet_PersonalizationPerUser.PathId
and aspnet_Users.UserName ='admin'
and aspnet_PersonalizationPerUser.UserId = aspnet_Users.userId ";
SqlCommand cm = new SqlCommand(q, conn);
string b = (string)cm.ExecuteScalar();
if (b == "true")
{
Menu1.Items.Add(masterItem);
}
所以当我运行应用程序时它说需要声明标量变量mp。你能告诉我错在哪里吗?
需要在命令中添加参数
SqlCommand cm = new SqlCommand(q, conn);
cmd.Parameters.Add(parameter);
string b = (string)cm.ExecuteScalar();
您需要实际将参数添加到SqlCommand对象中。
我的第一印象是:
cm.Parameters.Add(parameter);
在调用ExecuteScalar
您只是在创建一个参数,而不是将其添加到命令中。尝试在执行命令之前添加这个:
cm.Parameters.Add(parameter);
您忘记在命令中添加参数@mp
cm.Parameters.Add(parameter)