运行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。你能告诉我错在哪里吗?

运行SQL查询时出现问题

需要在命令中添加参数

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)