2013-05-08 2 views
0

Для моей компании я должен создать базу данных клиентов, которую я управляю над приложением VB.NET.SQL как с несколькими текстовыми полями

Приложение имеет несколько текстовых полей и кнопку «Поиск» для клиента. Если я набираю имя клиента, оператор SQL Select работает и заполняет мой datagrid.

Но я хочу, чтобы иметь возможность вводить имя клиента и улицу, на которой он живет. Какое наилучшее решение для этого? используя случаи? используя множество утверждений 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

Вы открыты для [sql-injection] (http://msdn.microsoft.com/en-us/library/ms161953 (v = sql.105) .aspx). Используйте ['SqlParameter's] (http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlparameter.html). –

+0

Спасибо за подсказку, заменит его. – bibz

ответ

0

Вы можете избежать использования большого количества операторов if, если хотите, но все, что вы делаете, - это шунтирование нагрузки на ваш SQL-сервер, а не его наличие на клиенте.

Пример: здесь вы можете использовать множество операторов if или trernary для определения того, как вы создаете свой SQL-запрос, ставя очень легкую нагрузку на клиента, или вы можете просто вставить текстовое значение каждого из ваши поля, за которым следует знак процента и окружен одинарными кавычками, что заставляет ваш SQL-сервер оценивать содержимое этих полей, если это не так, если поле пустое.

Возможно, оптимизация плана запроса позволит удалить лишние поисковые запросы, и, возможно, это не так. Я набираю это на своем телефоне и поэтому не имею ничего доступного для тестирования.

Смежные вопросы