Vb. net Расширенный поиск в текстовом поле - PullRequest
0 голосов
/ 27 мая 2020

Я внедряю систему, и в этой системе я хочу искать продукт при изменении текста в текстовом поле в 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

Спасибо

1 Ответ

0 голосов
/ 27 мая 2020

Ваше предложение SQL WHERE имеет подстановочный знак % только в конце значения:

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

Таким образом, начало ProductName должно совпадать, но конец может быть чем угодно. Если вам нужна эта функциональность для обоих концов строкового значения, вы можете просто поместить подстановочный знак на обоих концах:

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

ВАЖНО: Ваш код в настоящее время открыт для SQL инъекции, что является не только явной дырой в безопасности, но и очень распространенным источником ошибок. Вам следует использовать параметры запроса вместо того, чтобы напрямую помещать вводимые пользователем данные в ваш запрос, поскольку злоумышленник может ввести код в ваш запрос.

Этот вопрос и его принято Ответ - отличный пример того, как это сделать.

...