【发布时间】:2018-09-19 18:49:21
【问题描述】:
我正在创建一个使用此查询的搜索栏。我收到错误消息:
必须声明标量变量“@a”
这个错误消息出现在所有@a/@b/@c/@d。有人知道错误指的是什么吗?
SELECT [a],[b],[c],[d]
FROM [dbo].table1
WHERE (([a] LIKE '%' + @a + '%')
OR ([b] LIKE '%' + @b + '%')
OR ([c] LIKE '%' + @c + '%')
OR ([d] LIKE '%' + @d + '%'));
我也试过了:
SELECT *
FROM [dbo].table1
WHERE (([a] LIKE '%'+@a+'%')
OR ([b] LIKE '%'+@b+'%')
OR ([c] LIKE '%'+@c+'%')
OR ([d] LIKE '%'+@d+'%'));
选择的目标应该是过滤用户输入,并在显示用户输入结果的同时仍然从表格的其余部分中过滤。任何帮助将不胜感激。
这是我在 SQL Server 中工作后尝试附加的 Button 调用。
protected void BtnSearch_Click1(object sender, EventArgs e)
{
string mainconn = ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(mainconn);
sqlconn.Open();
SqlCommand sqlcomm = new SqlCommand();
string sqlquery = "SELECT * FROM [dbo].Imported_USPFOWEB_Pers_Unit_tbl WHERE (([upc] LIKE '%'+@upc+'%') OR ([uname] LIKE '%'+@uname+'%') OR ([st_addr] LIKE '%'+@st_addr+'%') OR ([pr_nbr] LIKE '%'+@pr_nbr+'%'))";
sqlcomm.CommandText = sqlquery;
sqlcomm.Connection = sqlconn;
sqlcomm.Parameters.AddWithValue("upc", TxtSearch.Text);
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(sqlcomm);
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
运行站点并按下按钮时的错误消息如下:
System.Data.SqlClient.SqlException:必须声明标量变量“@uname”。
【问题讨论】:
-
你如何调用这个查询?来自 T-SQL 代码?来自其他语言?代码本身似乎没问题 - 我怀疑这是您尝试调用/执行此查询的方式的问题
-
我将编辑帖子,提供更多信息/代码,但我只是想先在 SQL Server 中作为简单的选择语句进行查询。比将它添加到我要附加的一些 C# 代码中。
-
您在查询中引用了 4 个参数,但您的代码只创建了一个。那些领先的通配符会导致疯狂的性能问题。
标签: c# sql sql-server