Member 11566968 Ответов: 1

как искать данные с помощью текстового поля в базе данных в vb.net


это мой код, но когда я нажимаю на поиск, появляется ошибка! Пожалуйста помочь..
спасибо

<pre lang="vb">


Private Sub Button1_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button1.Щелчок

ds = новый набор данных
таблицы = ds.Tables
да = новый объект oledbdataadapter("Select * из AMORLITO где _name = '" &амп; текстовое поле textbox1.Текст &ампер; "'", кон) 'элементы поменять на название вашей базы данных

Если da.Fill(ds, "AMORLITO"), то 'измените элементы на имя вашей базы данных
Тусклый вид как новый DataView(таблицы(0))
файлы source1.Источник данных = вид
DataGridView1.DataSource = просмотр
Еще
MsgBox("нет данных!")
Конец, Если
Конец Подводной Лодки

Kaushik S Murthy

В чем заключается ошибка, которую вы получаете?

Richard Deeming

Ваш код уязвим для SQL-инъекция[^].

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

Member 11566968

Синтаксическая ошибка в выражении запроса '_name = "'
это мой первый раз в программировании. ^^,

Member 11566968

каковы примеры параметризованного запроса?Я новичок спасибо

Member 11566968

большое вам спасибо, как я могу связать имя?

Richard Deeming

Вам нужно будет объяснить это - связать его с чем?

Member 11566968

я хочу вводить только буквы. пример я ввожу "а" все имеют букву "А" в базе данных _name, будут запрашивать и показывать в моем datagridview.

Richard Deeming

Итак, вы хотите использовать Like сравнение, а не ан =?
SELECT * FROM AMORLITO WHERE [_name] Like '%' + ? + '%'

Member 11566968

"Выбрать * из AMORLITO где [_name] как '*' + '" &амп; текстовое поле textbox1.Текст &ампер; "' + '*' "

никаких данных, не так ли?

Richard Deeming

Нет, вам нужно использовать параметризованный запрос.

Member 11566968

спасибо, Ричард. Теперь я понимаю. ^^

1 Ответов

Рейтинг:
11

Richard Deeming

Начните с фиксации SQL-инъекция[^] уязвимость в вашем коде.

Затем проверьте название своей колонки. Это действительно называется _name (с ведущим символом подчеркивания)? Если это так, вам нужно будет заключить его в квадратные скобки.

Попробуйте что-нибудь вроде этого:

Dim da As New OleDbDataAdapter("SELECT * FROM AMORLITO WHERE [_name] = ?", con)

' OleDb doesn't use named parameters, so the parameter name doesn't matter here:
da.SelectCommand.Parameters.AddWithValue("p0", TextBox1.Text)

Dim ds As New DataSet()
If da.Fill(ds, "AMORLITO") Then
    Dim view As DataView = ds.Tables(0).DefaultView
    source1.DataSource = view
    DataGridView1.DataSource = view
Else
    MsgBox("NO DATA!")
End If


Sascha Lefèvre

+5