对于我的公司,我必须创建一个客户数据库,我通过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
提前致谢!
答案 0 :(得分:0)
如果你真的想要,你可以避免使用大量的if语句,但你所做的只是将负载分流到SQL服务器而不是在客户端上。
这里的示例是一个可以使用大量if语句或三元运算符来确定如何构建SQL语句,在客户端上加载非常轻的处理负载,或者只需插入每个语句的文本值的示例。字段,后跟一个百分号,并用单引号括起来,从而使得SQL服务器评估这些字段的内容,否则如果该字段为空则不会。
可能的查询计划优化会删除那些多余的字段搜索,也许它不会。我正在手机上打字,所以没有任何东西可供测试。