【写在前边的话】
在进行机房重构的过程中,设计组合查询的窗体,真的是学到了很多东西。以管窥豹,以蠡测海,所以想小小的总结一下,缅怀这一寸寸学习的时光。
【设计模式之模板方法的运用】
模板方法模式——在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。
我们在机房重构的过程中,涉及组合查询的窗体有多个,我们就可以采用模板方法,这样给我们提供了很大的便利。
采用模板方法的步骤:
1、建立一个Windows窗体,作为父窗体。
2、继承此窗体,添加对应的子窗体。
我们在父窗体内写入查询、传参、判空等一般性的事件,而只需在子窗体里写入根据窗体与操作的数据库不同而产生个性化的地方,就可以满足我们的需求。
【存储过程的运用】
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
组合查询的时间运用到了存储过程,这样方便了很多。因为组合查询要对数据库进行很多次操作,我们采用存储过程直接封装调用就可以了。
【数据类型与比较大小】
以查询学生上机状态这个窗体为例,我设置了三个可以选择的字段:卡号、上机日期、上机时间。在优化的过程中会出现以下错误:
1、比较大小时,根据卡号有时会出现查询结果明显错误的情况。我通过网络查询和咨询大神了解到:字符串如果位数不一样不能直接比较大小,于是我设定卡号必须是6位。
2、通过TextBox手动输入时间或日期的时,会出现“时间和/或日期转换失败”的错误。于是我新建立了6个DateTimePicker控件,添加CmboBox的Click事件:根据第一个选择的第一个查询条件的不同,隐藏或可用TextBox。
3、我于是在实体中新建了6个参数来传参,但是数据传入存储过程的时间过于庞大的判断逻辑让我险些崩溃,根据彪哥的建议,我之间把DateTimePicker可用时的数据进行强制转换,并赋值给TextBox,让后根据以前的逻辑就可以进行查询,算是走了个捷径,感谢彪哥。
【小结】
遇到的困难就是提升自己的机会,不要畏惧它。要善于利用互联网、善于向身边的大神学习,我们都是最棒的!