Как составить SQL запрос который будет сортировать, только по поступившим данным

Рейтинг: 2Ответов: 1Опубликовано: 22.04.2015

Например, имеем таблицу

Имя|Фамилия|Телефон

И нужно построить SQL запрос по поступающим данным из текстбоксов программы Как сортировать только по тем текстбоксам, в которые пользователь ввел значения?

Например:

1)У меня 3 текстбокса, я ввел только в текстбокс поиска по имени. Значит должен происходить только поиск по имени.

2)У меня 3 текстбокса, я ввел только в текстбокс поиска по имени и по телефону. Значит должен происходить только поиск по имени и телефону, но безразлично, какая фамилия.

Подскажите, как реализовать данный функционал?

Единственное, что приходит на ум - проверять на IsEmptyOrWhiteSpace и в зависимости от результата применять соответствующий SQL запрос.Но при большем количестве textbox'ов это будет громоздко...

Ответы

▲ 4Принят
  1. Создайте в программе словарь в котором ключами будут поля вашей таблицы, а значениями текстбоксы

код

Dictionary<string, TextBox> dict = new Dictionary<string, TextBox>()
{
    { @"FName", this.tbFName },
    { @"LName", this.tbLName },
    { @"Text", this.tbText }
}
  1. Секцию WHERE своего запроса соберите в отдельной функции, в которой будете проходится по этому словарю

код:

private string getWhere()
{
     string tmp = @"WHERE ";
     string result = string.Empty;

     foreach (var next in dict)
     {
         if (!string.IsNullOrWhiteSpace(next.Value.Text))
         {
             if (result != string.Empty) { result = result + @" and "; }
             result = result + string.Format("{0} = \'{1}\'", next.Key, next.Value.Text);
         }
     }

     if (result != string.Empty)
     {
         result = tmp + result;
     }
     return result;
}
  1. Дергайте эту функцию, когда будете создавать свой запрос