0

对于我的公司,我必须创建一个客户数据库,我通过 VB.NET 应用程序对其进行管理。

该应用程序有几个文本框和一个用于“搜索”客户的按钮。如果我输入客户的姓名,SQL Select 语句正在运行并填充我的数据网格。

但我希望能够输入客户的姓名和他居住的街道。对此最好的解决方案是什么?使用案例?使用大量的 If 语句?

这是我的代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)      Handles Button1.Click
    If True Then
        Dim Conn As New MySqlConnection
        Dim da As MySqlDataAdapter
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim plz As String = plzTextBox.Text

        Conn.ConnectionString = "server=localhost;uid=root;pwd=;database=wws; "

        Dim sql As String = String.Empty
        If vornameTextBox.Text <> String.Empty Then
            sql = "vorname = " & vornameTextBox.Text.Trim
        End If
        If nachnameTextBox.Text <> String.Empty Then
            AddCondition(sql, "nachname LIKE '%" & nachnameTextBox.Text.Trim & "%'")
        End If
        If emailTextBox.Text <> String.Empty Then
            AddCondition(sql, "email LIKE '%" & emailTextBox.Text.Trim & "%'")
        End If
        If plzTextBox.Text <> String.Empty Then
            AddCondition(sql, "plz LIKE '%" & plzTextBox.Text.Trim & "%'")
        End If
        If sql <> String.Empty Then
            da = New MySqlDataAdapter("SELECT id,vorname,nachname,email,plz,strasse,nummer,stiege,stock,tuer FROM kunden WHERE " + sql, Conn)

            da.Fill(dt)

            DataGridView1.DataSource = dt
        End If



    Else
        DataGridView1.ColumnCount = 1
        DataGridView1.Rows.Add("1")

    End If

End Sub

提前致谢!

4

1 回答 1

0

如果你真的想要,你可以避免使用大量的 if 语句,但你所做的只是将负载分流到 SQL 服务器上,而不是在客户端上。

此处的示例是一个您可以使用大量 if 语句或三元运算符来确定如何构建 SQL 语句的示例,将非常轻的处理负载放在客户端上,或者您可以只插入每个字段的文本值,然后用百分号并用单引号括起来,从而使您的 SQL 服务器评估这些字段的内容,否则如果字段为空白则不会。

查询计划优化可能会删除那些多余的字段搜索,也可能不会。我在手机上输入这个,所以没有任何东西可以测试。

于 2013-05-08T22:35:53.057 回答