Шаблон проектирования для создания запросов SQL - PullRequest
3 голосов
/ 07 февраля 2012

Почти в каждом проекте есть панель поиска и пользовательские фильтры в моей компании.Трудно создать, когда в проекте слишком много фильтров.

Есть ли хороший шаблон проектирования для создания пользовательских SQL-запросов для использования с фильтрами?

Я всегда пишу что-то вроде этого:

commandText = "SELECT * FROM XXX "

innerJoinCommand = ""
whereCommand = ""

if (??.length > 0)
  whereCommand += "AND ??? "

if (??.Count > 0)
  innerJoinCommand += "??? "

//...

if (innerJoinCommand.length > 0)
  commandText += innerJoinCommand

if (whereCommand.length > 0)
  commandText += "WHERE " + whereCommand

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Подобные вещи часто выполняются с использованием Pattern Builder .

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

2 голосов
/ 08 февраля 2012

Я использовал следующий дизайн:

Это действительно хороший дизайн?

Небольшой трюк состоит в том, чтобы поставить "ГДЕ 1 = 1", чтобы выне нужно обрабатывать, если это и или где вы должны добавить.

0 голосов
/ 07 февраля 2012

вот как я это делаю: (srp - это объект, который содержит все возможные параметры)

   string query = "select * from TABLE";

        if (srp != null)
        {
            query += " Where ";
            bool firstParameter = true;

            if (srp.ID!= 0)
            {
                if (!firstParameter)
                {
                    query += " and ";
                }
                query += " ID= " + srp.ID.ToString();
                firstParameter = false;
            }
        }

тогда вы можете копировать внутреннее, если вам нужно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...