2014-11-24 2 views
0

По какой-то причине подобное не работает, например, это имя, где Джейсон и я ищем «Ja», «jason» должен появиться, это не так. Является ли код неправильным? Это в локальной базе данных, может быть, это помогает?Поиск по LIKE не работает в базе данных vb.net

Private Sub BTN_Search_Click(sender As Object, e As EventArgs) Handles BTN_Search.Click 
    'If txtbox is blank then show all records, else do the search by first name. 
    If TBX_Search.Text = "" Then 
     DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select("FirstName LIKE'" & "%" & "'") 
    Else 
     DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select("FirstName LIKE'" & TBX_Search.Text & "'") 
    End If 
End Sub 
+1

Вы уверены, что этот код работает? Назначение массива DataRow в качестве источника данных для DataGridView не представляется правильным. Вы видите содержимое своей строки, когда текст поиска пуст? – Steve

+0

Да, нет, с этой стороной кода нет проблемы. –

ответ

1
Private Sub BTN_Search_Click(sender As Object, e As EventArgs) Handles BTN_Search.Click 
     'If txtbox is blank then show all records, else do the search by first name. 
     If TBX_Search.Text = "" Then 
      DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select("FirstName LIKE '%'") 
     Else 
      DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select("FirstName LIKE '%" & TBX_Search.Text & "%'") 
     End If 
End Sub 

В своем коде вы указываете базу данных для извлечения статей соответствия Ja вместо того, чтобы искать Ja% (и что-то позади него)

  • Добавить % до вашего SearchString к разрешить результаты с чем-либо перед Ja
  • Добавить % после того, как ваш SearchString, чтобы результаты с чем-либо после Ja
  • Добавьте их до и после SearchString, чтобы соответствовать любой результат с термином Ja в нем
+0

Ах, я благодарю вас за это. –

1

% указывает на частичное или недостающую часть (части), вы все равно это нужно (для вашего случая) в конце.

DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select("FirstName LIKE'" & TBX_Search.Text & "%'")

Кроме того, Google "инъекция SQL", приведенный выше код на рожон.

+0

Нет, на метод Select не влияет Sql Injection. Это не работает с объектом памяти, подобным DataTable. Кстати, я бы также предложил полностью удалить выражение фильтра в первом случае. A Выбрать без фильтра возвращает все строки – Steve

+0

@Steve> Вы правильно указали на выражение фильтра, я должен был это увидеть, спасибо. –

1

Похоже, что вам нужно подстановочные знаки на Else логика:

DoctorsDataGridView.DataSource = Me.RecordsDataSet.Doctors.Select ("ПгвЬЫате LIKE '" & TBX_Search.Text & "%')

Это логика для текста «начинается с».

Смежные вопросы