显示用户标签不能正常工作的代码

时间:2015-04-19 15:42:21

标签: c# count label

我有两个下拉列表中的一个国家(worlddrdolist),另一个是州(staatddl)和按钮(NumOfUsrBtn),如果用户点击它,那么标签将显示用户的总和取决于a从(worlddrdolist)中选择的国家首先,无论用户是否选择状态,如果用户选择状态,那么它将根据国家显示用户,下面的代码需要更新并修复部分内容,因为我尽我所能修复,但我肯定,我收到错误信息:

  

“必须声明标量变量”@cou“。”也“必须宣布   标量变量“@sta”。“

 protected void NumOfUsrBtn_Click(object sender, EventArgs e)
    {

        using (var conn = new SqlConnection(sc))
        {
            string UsrNumSQL = "SELECT COUNT (UsrID)FROM UserInfo WHERE 1=1 AND Country = @cou AND State=@sta";

            using (var cmd = new SqlCommand(UsrNumSQL, conn))
            {
                cmd.CommandType = CommandType.Text;
                cmd.CommandTimeout = 10000;
                cmd.Parameters.AddWithValue("@cou", worlddrdolist.SelectedValue);
                cmd.Parameters.AddWithValue("@sta", staatddl.SelectedValue);


                string condition = "";

                if (worlddrdolist.SelectedValue != "")
                {
                    condition += " and Country='" + worlddrdolist.SelectedValue + "'";
                }
                if (staatddl.SelectedValue != "")
                {
                    condition += " and State='" + staatddl.SelectedValue + "'";
                }
                cmd.Connection.Open();

                NumbOfUsersLbl.Text = cmd.ExecuteScalar().ToString();
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

这不是parameterized queries的工作方式。

您需要在参数中添加参数值作为参数,而不是附加条件。

cmd.Parameters.AddwithValue("@cou", worlddrdolist.SelectedValue);
cmd.Parameters.AddwithValue("@sta", staatddl.SelectedValue);

但我强烈怀疑你只是想在{1}}添加其他条件,你不需要在你的命令中使用参数。看起来你的条件在编译时是未知的,而你想在运行时构建它们。

在这种情况下,只需删除查询中不必要的部分,因为您希望根据您的条件添加它们;

AND...