asp.net c#必须声明标量变量错误
本文关键字:标量 变量 错误 声明 net asp | 更新日期: 2023-09-27 18:11:26
我在我的项目中使用查询字符串,除了这个错误:
必须声明标量变量"@cAND"
这是我的代码:
string connectionString = WebConfigurationManager.ConnectionStrings["Mydb"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
searchKey.Text = Request.QueryString["n"];
try
{
// Try to open the connection.
con.Open();
SqlCommand viewH = new SqlCommand();
viewH.Connection = con;
String sql = @"SELECT * FROM hotels ";
if (Request.QueryString["n"] != "" && Request.QueryString["n"] != null)
{
sql += "WHERE h_name LIKE '%' + @n + '%'";
viewH.Parameters.AddWithValue("@n", Request.QueryString["n"]);
}
else
sql += "WHERE h_name LIKE '%%' ";
if (Request.QueryString["c"] != "" && Request.QueryString["c"] != null)
{
sql += "AND h_country = @c";
viewH.Parameters.AddWithValue("@c", Request.QueryString["c"]);
}
if (Request.QueryString["f"] != "" && Request.QueryString["f"] != null)
{
sql += "AND h_price > @f";
viewH.Parameters.AddWithValue("@f", Convert.ToInt32(Request.QueryString["f"]));
}
if (Request.QueryString["t"] != "" && Request.QueryString["t"] != null)
{
sql += "AND h_price <@t";
viewH.Parameters.AddWithValue("@t", Convert.ToInt32(Request.QueryString["t"]));
}
if (Request.QueryString["s"] != "" && Request.QueryString["s"] != null)
{
sql += "AND h_stars = @s";
viewH.Parameters.AddWithValue("@s", Convert.ToInt32(Request.QueryString["s"]));
}
viewH.CommandText = sql;
SqlDataReader data = viewH.ExecuteReader();
htmlStr = new StringBuilder("");
while (data.Read())
{... etc ... }
错误出现时,我使用(s)查询字符串在我的网站,如
example.com/hotels.aspx ? c = sy& s = 1
但是如果我使用this链接:example.com/hotels.aspx ? s = 1没有问题
可能是当您构建sql
字符串时,您没有在c
之后添加空格,因此您将其与以下AND
连接?