SQL与多个文本框一样

时间:2013-05-08 22:12:20

标签: sql vb.net select

对于我的公司,我必须创建一个客户数据库,我通过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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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

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