1
即时通讯尝试学习使用VB.net编码,我有一个简单的CRUD应用程序(VB.net和Sqlite),其中的数据显示在网格框中。除了搜索数据之外,一切都可以工作。SQLite VB.net查询
我想根据用户在组合框中选择的列名来搜索数据库。
原代码:
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