基于数据字典的查询系统 最后一篇到完工

MS大家不喜欢我说思路的方式,今天一鼓作气,把剩下的关键代码,类图贴完,加上简单说明,本系列到此结束。

我觉得技术网站应当以交流思想为主,现在看来,大家比较关注代码,呵。

界面上不写了,都比较弱智,而且我是CS的。

1.       布尔表达式的处理。

前面说过,布尔表达式两种形式

Exp àCol   + compareOp + Value

Exp àExp + boolOP +Exp

先定义compareOp和boolOp

这里没有用枚举而用静态单例,原因还是老调子,因为要有Show 和EXP

CompareOP

 

基于数据字典的查询系统 最后一篇到完工 Code

BoolOp

 

基于数据字典的查询系统 最后一篇到完工 Code

 

下面讨论布尔表达式的生成方式 。

一种是Exp àCol   + compareOp + Value

所以直观上类中应该有一个QueryCol,一个comareOP,和一个value做为布表达式的成员。

而对于value ,当然,我们还要分show和Exp

而对于第二种生成方式。

Exp àExp + boolOP +Exp

还是用“妥协的设计方式”,加一个不论不类的类AddBoolOp,有BoolOp和BoolExpresion两个成员。

这样BoolExpression再加一个List<AddBoolOp>就可以了。

对于在两种方式切换,我们加一个IsFirst的属性、

具体内容不多说,写代码里(大家要的就是这个吧,不好意思,两天了,我还是窝不住火,说话冲点,各位大爷息怒)、

对了,生成条件表达式的内容加在ToString()中了,这个招确实有点下三滥,呵呵,不好意思啦。

 

基于数据字典的查询系统 最后一篇到完工 Code

妥协类AddBoolExpression和其集合。

 

基于数据字典的查询系统 最后一篇到完工 Code

 

基于数据字典的查询系统 最后一篇到完工 Code

 

现在还剩对选择列的处理。

前面说了select后面的列,可以是group 的列,也可以是count,sum,也可以是是值,因此先定义输出的方式 ,还是静态类(这招快让我用吐了,呵呵)

 

基于数据字典的查询系统 最后一篇到完工 Code

下面就是选择的列了、

 

基于数据字典的查询系统 最后一篇到完工 Code

在定义一个选择列的集合,对一些条件,约束的判断加在这里了

 

基于数据字典的查询系统 最后一篇到完工 Code

 

最后是一个生成查询的类QueryContext。

 

基于数据字典的查询系统 最后一篇到完工 Code

其中对多表连查的条件判断已经加到里面了,到此,全部关键代码。算法都已经搞定。

至于界面是BS还是CS 各位自便。

在此贴上几张俺的CS效果图(很草,算demo吧)

 主界面

串查询

 

基于数据字典的查询系统 最后一篇到完工

数值(和串基本相同)

基于数据字典的查询系统 最后一篇到完工

状态位

基于数据字典的查询系统 最后一篇到完工

输出方式

基于数据字典的查询系统 最后一篇到完工

仍然那句,欢迎拍砖(理性,不是急性)

你可能感兴趣的:(数据字典)