运行SQL查询时出现问题

时间:2011-08-15 19:05:40

标签: c# .net sql

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 ..你可以告诉我这个错误吗?

4 个答案:

答案 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)