【问题标题】:Searching datagrid view exact keywords搜索数据网格查看确切的关键字
【发布时间】:2016-01-01 00:22:09
【问题描述】:

我想让搜索结果准确无误。 例如,我输入“L”,我的程序只显示任何包含字母“L”的结果,而不是显示第一个字母是“L”的结果。那该怎么做呢?

这是我的代码:

***在搜索框搜索或输入之前,用户必须先选择一个单选按钮来搜索列中的数据,在我的程序中有 3 个单选按钮(ID、姓氏、名字)

 Private Sub txtSearch_TextChanged(sender As Object, e As EventArgs) Handles txtSearch.TextChanged
        Dim DataTable As New DataTable
        Dim DataAdapter As New MySqlDataAdapter
        MySqlConn = New MySqlConnection
        MySqlConn = New MySqlConnection("server=localhost;user id=root;password=root;database=PatientManagementSystem;")
        MySqlConn.Open()
        'SEARCH ID
        If rdbtnID.Checked = True Then
            txtSearch.MaxLength = 9
            With cmd
                .Connection = MySqlConn
                .CommandText = "SELECT * FROM newpatient WHERE ID like '%" & txtSearch.Text & "%'"
            End With
            DataAdapter.SelectCommand = cmd
            DataTable.Clear()
            DataAdapter.Fill(DataTable)
            dgvRecords.DataSource = DataTable
            MySqlConn.Close()
            'SEARCH LASTNAME
        ElseIf rdbtnLastname.Checked = True Then
            txtSearch.MaxLength = 32767
            With cmd
                .Connection = MySqlConn
                .CommandText = "select * from newpatient where Lastname like '%" & txtSearch.Text & "%'"
            End With
            DataAdapter.SelectCommand = cmd
            DataTable.Clear()
            DataAdapter.Fill(DataTable)
            dgvRecords.DataSource = DataTable
            MySqlConn.Close()
            'SEARCH FIRSTNAME
        ElseIf rdbtnFirstname.Checked = True Then
            txtSearch.MaxLength = 32767
            With cmd
                .Connection = MySqlConn
                .CommandText = "SELECT * FROM newpatient WHERE Firstname like '%" & txtSearch.Text & "%'"
            End With
            DataAdapter.SelectCommand = cmd
            DataTable.Clear()
            DataAdapter.Fill(DataTable)
            dgvRecords.DataSource = DataTable
            MySqlConn.Close()

        End If

    End Sub

【问题讨论】:

    标签: mysql vb.net datagrid


    【解决方案1】:

    您需要从开头删除 % like 符号。

    改变

    "SELECT * FROM newpatient WHERE ID like '%" & txtSearch.Text & "%'"
    

    进入:

    "SELECT * FROM newpatient WHERE ID like '" & txtSearch.Text & "%'"
    

    我还建议:(1)如果这是一个生产系统,请使用参数化 sql,以及(2)如果您坚持使用 sql 连接,您需要将用户键入的 txtSearch.Text 中的任何单引号转义为 2 个单引号.否则sql语句会失败。

    【讨论】:

    • 不错。不要忘记绿色勾号!
    • 如果这对你有用,请给我一个绿色的勾
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多