【问题标题】:SQLite VB.net QuerySQLite VB.net 查询
【发布时间】:2017-02-04 06:01:58
【问题描述】:

我正在尝试使用 VB.net 学习编码,我有一个简单的 CRUD 应用程序(VB.net 和 Sqlite),其中数据显示在网格框中。除了搜索数据,一切正常。

我想根据用户在组合框中选择的列名来搜索数据库。

原代码:

    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 注入。
  • 你说你不能让它工作。这意味着发生了一些超出您预期的事情。这意味着你知道实际发生了什么。为什么我们不知道?
  • 如果您知道您只会使用一个,为什么还要创建两个数据适配器?至少将数据适配器的创建放入If...Else 块中,这样您就只创建您需要的。更好的是,您只需将所选值直接插入 SQL 代码,然后继续创建唯一的数据适配器。
  • @jmcilhiney 这实际上是我需要的,但我不知道该怎么做。我试过这个 Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE 'combobox1.selectedvalue' like '%" & TextBox1.Text & "%'", connection) 但它在每个选定的值中都给了我一个空白结果。
  • 在实际的 IF 语句中而不是在外部初始化每个适配器。就目前而言,您正在创建两者,并且只需要一个。使用参数。还要调试您的代码并确保SelectedValue 是您认为的那样。最后close你的连接不要clone

标签: vb.net sqlite


【解决方案1】:

找到答案了,谢谢大家的帮助

    If ComboBox1.SelectedIndex = 0 Then
        Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE name like '%" & TextBox1.Text & "%'", connection)
        da.Fill(dt)
        DataGridView1.DataSource = dt
        connection.Close()
        da.Dispose()
    Else
        Dim da As New SQLiteDataAdapter("SELECT * FROM tbl_biodata WHERE country like '%" & TextBox1.Text & "%'", connection)
        da.Fill(dt)
        DataGridView1.DataSource = dt
        connection.Close()
        da.Dispose()

    End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2020-06-17
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多