动态查询数据 - 最佳方法

时间:2012-05-17 23:05:38

标签: asp.net sql-server data-structures dynamic-sql

我设计的ASP.NET Web窗体应用程序将用于使用自定义值和过滤器动态查询数据库。

例如:

  • 拉出3个字段:SKU,描述,价格,颜色。

  • Description的值应为ProductName +逗号+空格+ 描述

  • Price的价值应为价格+ 10.00。

  • 如果SKU = 123,则Color的值应为红色。

我需要存储这些"规则"在我的SQL数据库中,以便我可以在以后根据这些规则查询我的数据库。

最初,我打算将规则存储为SQL文本,如" ProductName +',' + Description",然后在我的动态SQL中使用它。

但如果我这样做,那么需要做的一些事情是行不通的:

  1. 区分列名和静态文本。 (我想单引号可以解决这个问题)
  2. 不同的数据类型(连接时请说)
  3. 案例陈述
  4. 也有条款。
  5. 我需要想法如何解决这个问题 - 我的数据库结构以及如何从这些规则中查询。

    我使用的是ASP.NET Web Forms,SQL Server数据库。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

对于这个想法,我想到的是定义业务规则表并将值放在其中,如: BR_PK BR_CODE BR_VALUE
1 SKU_Fields P.SKU,P.Description,P.Price,P.Color
2 Price_Val P.Price + 10


您可以加入动态查询以获取该数据并加入其他表的数据,但您必须保持与业务规则表中定义的别名相同。

我会尝试找到一些更好的方法,但它会立即出现在我脑海中。

答案 1 :(得分:0)

我最终创建了一个包含Fields(FieldID,FieldName)和Values(Value,ValueType,Datatype,FieldID)的表。所以,如果我需要描述等于ProductName +逗号+空格+描述,我会在Fields表中有一个记录,其中FieldName =“Description”和ProductName的值记录,逗号+空格和描述。 ProductName和Description的ValueType为“Field”,“,”(逗号空格)将为“Static”。

然后,我使用基于这些属性的参数构建了我的sql查询。