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 ..你可以告诉我这个错误吗?
答案 0 :(得分:3)
您需要将参数添加到命令中。
SqlCommand cm = new SqlCommand(q, conn);
cmd.Parameters.Add(parameter);
string b = (string)cm.ExecuteScalar();
答案 1 :(得分:1)
您需要将参数实际添加到SqlCommand对象。
在我的脑海中,我认为它是这样的:
cm.Parameters.Add(parameter);
在调用ExecuteScalar之前执行此操作
答案 2 :(得分:1)
您只是创建一个参数,而不是将其添加到您的命令中。尝试在执行命令之前添加它:
cm.Parameters.Add(parameter);
答案 3 :(得分:0)
您忘记将参数@mp
添加到命令
cm.Parameters.Add(parameter)