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


    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吧)

     主界面

    串查询

     

    数值(和串基本相同)

    状态位

    输出方式

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

  • 相关阅读:
    Android 4.1 for Developers
    Frame Animation 帧动画
    07事事精明,人人远离。
    Launcher 拖拽 流程小结『android 2.3 2.2』
    Android开发书籍推荐
    My first App EncryptWheel is in WAITING FOR REVIEW status
    ubuntu安装显卡驱动
    Shell脚本学习笔记(十)文件操作
    Shell脚本学习笔记(四)流程控制
    Shell脚本学习笔记(五)函数
  • 原文地址:https://www.cnblogs.com/geyunfei/p/1359141.html
Copyright © 2020-2023  润新知