【机房重构】——查看上机记录、充值记录+三层+存储过程+模板方法
来源:互联网 发布:ctr csm数据区别 编辑:程序博客网 时间:2024/05/21 11:07
模板方法
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
即:重复度高的窗体,可以用模板方法,比如组合查询。少数的不同之处在父类中定义虚方法,在子类中重写。
分析
一般用户中,充值记录,和上机记录除了查询的表不一样,其它一模一样,所以考虑用模板方法,这样可以达到事半功倍的效果。
详细步骤及代码
父类:新建普通Windows窗体:
U层:
'**********************************************'说明:U层'计算机名称:ZHAOHAN'创建日期:2015/4/24 16:13:58'作者:赵寒'版本号:V2.00'**********************************************Public Class frmQueryParent Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnchk.Click Dim e_card As New ChargeEntity.EComQueryParent Dim b_queryinfo As New ChargeBLL.QueryBLL e_card.CardNo = txtcardno.Text e_card.GetTable = GetTable() If b_queryinfo.queryInfo(e_card) Is Nothing Then MsgBox("没有记录,请重新设置查询条件", vbOKOnly, vbExclamation) DataGridView1.DataSource = Nothing Else DataGridView1.DataSource = b_queryinfo.queryInfo(e_card) End If End Sub '定义虚方法 Protected Overridable Function GetTable() As String Return "" End Function End Class
B层:
'**********************************************'说明:B层'计算机名称:ZHAOHAN'创建日期:2015/5/3 11:01:32'作者:赵寒'版本号:V2.00'**********************************************Public Class QueryBLL Public Function queryInfo(ByVal cardno As ChargeEntity.EComQueryParent) As DataTable Dim d_query As New ChargeDAL.sqlPQuery Dim e_query As New ChargeEntity.EComQueryParent Dim table As New DataTable table = d_query.GroupQuery(cardno) Return table End FunctionEnd Class
D层:
'**********************************************'说明:D层'计算机名称:ZHAOHAN'创建日期:2015/5/3 10:24:35'作者:赵寒'版本号:V2.00'**********************************************Imports System.Data.SqlClientImports IDALPublic Class sqlPQuery Public Function GroupQuery(ByVal info As ChargeEntity.EComQueryParent) As DataTable Dim strSql As String = "PROC_QueryLR " '连接存储过程 Dim sql As New SqlHelper Dim sqlparams As SqlParameter() = { New SqlParameter("@datatable", info.GetTable),'存储过程赋参值 New SqlParameter("@cardno", info.CardNo) } Return sql.ExecSelect(strSql, CommandType.StoredProcedure, sqlparams) End FunctionEnd Class
实体层:
<pre name="code" class="vb">Private e_gettable As String
Public Property GetTable As String'用于存表名 Get Return e_gettable End Get Set(value As String) e_gettable = value End Set End Property Private e_cardno As String’用于存卡号 Public Property CardNo As String Get Return e_cardno End Get Set(value As String) e_cardno = value End Set End Property
存储过程:
CREATE PROCEDURE PROC_QueryLR@datatable varchar(20),@cardno varchar(10)AS declare @tempSql varchar(500)beginSET @tempSql='SELECT * FROM '+@datatable+' where CardNo ='+@cardno EXECUTE(@tempSql) end
先建立继承窗体
学生查看充值记录样图:
因为充值记录查询和上机记录查询,仅查询表不同,所以除了获取表名需要重写外,其它都不用再写。so子窗体只需要写这一点点代码。查询上机记录同上。
'**********************************************'说明:U充值记录查询子窗体'计算机名称:ZHAOHAN'创建日期:2015/4/24 16:13:58'作者:赵寒'版本号:V2.00'**********************************************Public Class frmchkRecharge '重获表名 Protected Overrides Function GetTable() As String Dim tabale As New ChargeEntity.EComQueryParent tabale.GetTable = "ReCharge_Info" Return tabale.GetTable End FunctionEnd Class
总结:
这样,通过模板方法,就有了事半功倍的效果,设计模式真的好强大。 1 0
- 【机房重构】——查看上机记录、充值记录+三层+存储过程+模板方法
- 机房重构之学生查看上机记录
- 机房重构——模板方法模式+单例模式+存储过程优化组合查询
- 【机房重构】—模板方法+存储过程简单实现组合查询
- 机房重构——存储过程
- 机房重构——存储过程
- 【机房重构】——存储过程
- 【机房重构】——存储过程
- 机房重构——存储过程
- 【机房重构】——存储过程
- 【机房重构】——存储过程
- 机房重构—存储过程
- VB.NET版机房重构----模板方法+存储过程实现组合查询
- 机房重构——三层登录
- 机房重构——三层架构
- vb.net版机房重构--充值记录查询
- [机房重构]错误记录——代码编写很重要
- 记录心情——机房重构的开始
- PythonChallenge第8题
- Android学习记录<三>
- java乱码处理
- hadoop SequenceFile介绍 大数据 存储
- Sum Root to Leaf Numbers
- 【机房重构】——查看上机记录、充值记录+三层+存储过程+模板方法
- WIN7问题记录
- Maven本地仓库配置和archiva私服搭建
- xcode6.3 搭建 kobold2D 环境
- 【机房重构】——视图,触发器,存储过程的使用
- 高仿QQ5.0的侧滑菜单的实现
- 《趣学Python编程》第一部分整理
- 出现“未调用resultset.next()”的错误
- Ruby和面向对象概览