我有两个下拉列表中的一个国家(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();
}
}
}
答案 0 :(得分:1)
这不是parameterized queries的工作方式。
您需要在参数中添加参数值作为参数,而不是附加条件。
cmd.Parameters.AddwithValue("@cou", worlddrdolist.SelectedValue);
cmd.Parameters.AddwithValue("@sta", staatddl.SelectedValue);
但我强烈怀疑你只是想在{1}}添加其他条件,你不需要在你的命令中使用参数。看起来你的条件在编译时是未知的,而你想在运行时构建它们。
在这种情况下,只需删除查询中不必要的部分,因为您希望根据您的条件添加它们;
AND...