Vb.net高级文本框搜索

问题描述 投票:0回答:1

我正在实现一个系统,在该系统中,我想在datagridview的文本框中更改文本时搜索产品。我已经完成了那部分。

但是我发现搜索命令仅帮助我找到单元格的乘积第一个单词。但是我想用任何选定的单元格对其进行过滤。

示例:在我的datagridview中,有一列Product Name。在该列中,数据为Galaxy A20s。当前,我必须在搜索文本框中键入以[[Galaxy ....开始,然后仅显示搜索结果。我想像我输入A20s一样修改输出,然后结果也应该在datagridview中过滤。

任何在vb.net上进行此操作的可能性。

这是我当前正在使用的代码。

Try con = New OleDbConnection(cs) con.Open() cmd = New OleDbCommand("SELECT (ProductID) as [Product ID],(ProductName) as [Product Name],(Brand) as [Brand],(UnitPrice) as [Unit Price] from ProductDB where ProductName like '" & txtSearch.Text & "%' order by ProductName", con) Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd) Dim myDataSet As DataSet = New DataSet() myDA.Fill(myDataSet, "ProductDB") dgFillProduct_Stock.DataSource = myDataSet.Tables("ProductDB").DefaultView con.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try

谢谢    
vb.net ms-access
1个回答
0
投票
您的SQL WHERE子句仅在值的末尾具有%通配符:

ProductName like '" & txtSearch.Text & "%'

因此ProductName的开头需要匹配,但结尾可以是任意值。如果您希望在字符串值的两端都具有该功能,则只需将通配符放在两端:

ProductName like '%" & txtSearch.Text & "%'


重要提示:您的代码当前可以进行SQL注入,这不仅是一个明显的安全漏洞,还是一个非常常见的错误源。您应该使用查询参数,而不是直接在查询中放置用户输入,因为恶意用户可能在查询中输入code。

This question及其接受的答案是如何执行此操作的一个很好的例子。
© www.soinside.com 2019 - 2024. All rights reserved.