Я пытаюсь изучить кодирование с помощью VB.net, у меня есть простое приложение CRUD (VB.net и Sqlite), где данные отображаются в сетке. все работает, кроме поиска данных.SQLite VB.net Query
Я хочу найти БД на основе имени столбца, в котором пользователь выбирает в выпадающем списке.
исходный код:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
' search functions
connect()
Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE name like '%" & TextBox1.Text & "%'", connection)
Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
connection.Clone()
da.Dispose()
End Sub
исходный код работает, но я хотел бы иметь возможность поиска на основе имени столбца, поэтому я попробовал этот
модифицированный код:
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
' search functions
connect()
Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE name like '%" & TextBox1.Text & "%'", connection)
Dim db As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE country like '%" & TextBox1.Text & "%'", connection)
Dim dt As New DataTable
If ComboBox1.SelectedValue = "name" Then
da.Fill(dt)
ElseIf ComboBox1.SelectedValue = "country" Then
db.Fill(dt)
End If
DataGridView1.DataSource = dt
connection.Clone()
da.Dispose()
End Sub
Я не могу заставить его работать. Я знаю, что моя основная проблема:
Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE name like '%" & TextBox1.Text & "%'", connection)
, но я больше не знаю, как это сделать. любая помощь очень ценится, спасибо.
Посмотрите в параметризованные запросы, в противном случае вы открыты для SQL инъекций. – OneFineDay
Вы говорите, что не можете заставить его работать. Это означает, что что-то происходит иначе, чем вы ожидаете. Это означает, что вы знаете, что на самом деле происходит. Почему мы этого не знаем? – jmcilhinney
Зачем создавать два адаптера данных, если вы знаете, что используете их только один? По крайней мере, поместите создание адаптера данных в блок 'If ... Else', чтобы вы только создали то, что вам нужно. Еще лучше, что вы просто вставляете выбранное значение непосредственно в код SQL, а затем просто продолжаете и создаете один и тот же адаптер данных. – jmcilhinney