jreypalars Ответов: 1

Vb.net | как фильтровать/искать базу данных с помощью datagridview


Привет Кодеры,

Не могли бы вы помочь найти код для моей проблемы? Я хочу отфильтровать свою базу данных, используя другую таблицу или datagridview, а не обычное текстовое поле.

Таблица 1:
(Column)Name	Surname
        Name1	Surname1
        Name2	Surname2
        Name3	Surname3


Таблица 2: (Параметр Поиска)
(Column)Name	Surname
        Name1	Surname1


Ожидаемые результаты в Таблице 1 приведены ниже:
(Column)Name	Surname
        Name1   Surname1


Любая помощь будет оценена по достоинству. Мой приведенный ниже код показывает только первую строку.

Что я уже пробовал:

Я пробовал использовать for loop.
For i as integer = 0 To dgv2.rowcount -1
Dim query as string = "SELECT * From db_table WHERE Name LIKE '%" & dgv2.rows(i).cells(0).value &"'"
Dim comm as new sqlcommand(query,conn)
dim adapter as new sqladapter(comm)
dim table as new datatable()
adapter.fill(table)
dgv1.datasource = table

Richard Deeming

Dim query as string = "SELECT * From db_table WHERE Name LIKE '%" & dgv2.rows(i).cells(0).value &"'"

Не делай этого так!

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Const query As String = "SELECT * FROM db_table WHERE Name LIKE @Name"
Dim comm as New SqlCommand(query, conn)
comm.Parameters.AddWithValue("@Name", "%" & dgv2.rows(i).cells(0).value & "%")

1 Ответов

Рейтинг:
2

RickZeeland

Поскольку вы используете DataTable, вы можете использовать дополнительный объект DataTable.Выбрать для получения фамилии смотрите примеры здесь:
https://www.dotnetperls.com/datatable-select-vbnet[^]
vb.net - фильтр datatable с помощью Like [SOLVED] | DaniWeb[^]