【发布时间】:2020-05-19 13:29:44
【问题描述】:
MySqlCommand command = new MySqlCommand("
select *
from singlecustomer
where name like concat ('%',@search,'%')
or code like concat ('%',@search,'%')
or id like concat ('%',@search,'%')", con);
command.Parameters.Add(new MySqlParameter("@search", "%"+sc.sc_SearchBox.Text+"%"));
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = command;
DataTable dt = new DataTable();
adapter.Fill(dt);
sc.dgClientLog.DataSource = dt;
这是方法 验证搜索是否成功。
SearchClientDataGrid(sc);
if (sc.dgClientLog.Rows.Count == 0)
{
sc.NoItemFoundLabel.Visible = true;
sc.NoItemFoundLabel.BringToFront();
return;
}
else
{
sc.NoItemFoundLabel.Visible = false;
}
它有效,但每当我以字符“%”开头搜索时,例如:%David,它仍然有效, 有没有办法删除%?我最近正在学习 MySql Parameter 以避免 Sql Injection。它只是让我觉得 % 确实有效,而不是返回 no found。
【问题讨论】:
-
sc.sc_SearchBox.Text.Trim('%') -
嗨 fubo 感谢您的回复。即使使用修剪,% 仍然有效,我也会做一个声明,但我担心它不会是动态搜索,因为做声明会使其成为应用程序级别的搜索,而不是数据库级别的搜索。
-
你能具体说明一下你的例子吗?我不确定我是否正确地回答了这个问题。输入/结果/预期结果
-
嗨 fubo,我将它应用到了 datagridview,通过从数据库中搜索并将其提供给数据集以显示到 datagridview。我收到输入/结果错误。例如,当我搜索名称时。大卫,它工作得很好,但是当我添加像 %David 这样的 % 字符时,它仍然会输出结果 David,我想要期待的是,如果我输入 %David 它不应该从包含大卫数据的表中返回一行,由于 % 字符,如果我尝试使用 #David 进行搜索,它不会返回我也希望使用 % 发生的行。