用于创建Sql查询的设计模式

时间:2012-02-07 13:31:42

标签: sql tsql design-patterns database-design mysqli

我公司几乎每个项目都有搜索面板和自定义过滤器。当项目有太多过滤器时,很难创建。

是否有任何好的设计模式可用于创建自定义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 个答案:

答案 0 :(得分:4)

通常使用Builder Pattern来完成此类事情。

如果你想支持非常复杂的查询,它可能是一个相当复杂的构建器,其他模式可能会发挥作用,但这是我要开始的地方。

答案 1 :(得分:2)

我使用了以下设计:

Is it a oop good design?

小技巧是设置“WHERE 1 = 1”,这样你就不必处理如果你是一个AND或你必须添加的地方。

答案 2 :(得分:0)

这是我的方式: (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参数,仍然没有创建更复杂的逻辑来使用或

相关问题