vb.net小试三层架构
在对三层架构有了初步了解后,用vb.net做了一个小的程序,真的很小,仅仅是为了体现一下三层之间机制。下面是我设计的操作界面:
还有程序集和类的分布情况,
接下来是数据的设计,数据库用到的是SQL Server2008
三层架构,用简单的话来概括说就是:.U层传入UI命令和参数,然后调用B层的业务逻辑,B层中业务逻辑要用到的数据是通过调用D层访问数据库来完成.通过这样的调用,D层的检索结果返给B层,B层通过业务逻辑加工、判断、处理数据,最后将处理结果返给UI层。
程序的功能包括对表中信息的增删改查,因为都展示出来篇幅过长,就选择其中添加的功能来进行阐述。接下来看代码是怎么体现出来的。
先看一下U层是怎么来引用B层的
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click '添加按钮
Dim ADDStu As New StuBLL.ManageBLL '实例化B层的类ManageBLL,实现对B层的引用
Dim Ustudent As New StuEntity.StudentEntity '实例化实体层类StudentEntity,方便存储参数
'对文本框的输入做限制
If Trim(txtID.Text) = "" Or IsNumeric(Trim(txtID.Text)) = False Then
MessageBox.Show("请输入合适学号,再进行该操作")
Exit Sub
End If
If Trim(txtName.Text) = "" Then
MessageBox.Show("请输入姓名,再进行该操作")
Exit Sub
End If
If Trim(txtTel.Text) = "" Or IsNumeric(Trim(txtTel.Text)) = False Then
MessageBox.Show("请输入联系电话,再进行该操作")
Exit Sub
End If
'给实体类的属性赋值
Ustudent.StuID = CInt((txtID.Text))
Ustudent.StuMarks = Trim(CStr(txtName.Text))
Ustudent.StuTel = CDec(txtTel.Text)
'调用类方法 AddStuManager 并报告
If ADDStu.AddStuManager(Ustudent) Then
MessageBox.Show("添加成功,请刷新")
Else
MessageBox.Show("该学号已添加,请重新添加") End If End Sub
通过上面的代码,知道U层实例化B层的类ManageBLL 调用了它的AddStuManager方法 完成了给操作,它就是这样引用了B层。
接下看看,它所引用的B层是如何构建并实现的:
Imports StuDAL
Imports StuEntity
Public Class ManageBLL
Public Function AddStuManager(ByVal stuInfoEn As StuEntity.StudentEntity) As Boolean '判断可否插入信息,并返回布尔值
Dim Controller As New StuDAL.SqlDAL '实例化D层类sqlDAL,完成对D层的引用
Dim StuInfo As New StuEntity.StudentEntity '引用实体类,以便储存一定的参数 If Controller.IsExist(stuInfoEn) = True Then '根据ID判断该条记录是否已经存在,若存在返回False
Return False
Else '若不存在,执行添加的方法,并返回True
Controller.AddStu(stuInfoEn)
Return True
End If
End Function
End Class
其实B层发挥的作用其实很大,对数据加工在上面的代码中没有很好的体现,只是对D层返回的数据进行了简单的判断。这里B层实例化了D层中的类sqlDAL ,调用了它的IsExit()和AddStu()方法,就这样引用了D层,完成了自己的业务逻辑。
无论B层的逻辑简单还是复杂,都妨碍不了D层,它只专注与对数据库数据的操作。
Imports StuEntity
Public Class SqlDAL
Public Function AddStu(ByVal stuinfoen As StuEntity.StudentEntity) As Boolean '根据传入的参数StudentEntity,执行 数据库 插入命令 并返回布尔值 Dim con As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Dim intResult As Integer con = New SqlClient.SqlConnection(ContactDAL.SqlString()) ‘建立对数据库的连接
cmd = con.CreateCommand() cmd.CommandText = "insert into T_Names (ID,Name,Tel) values (" & stuinfoen.StuID & ",'" & stuinfoen.StuMarks & "'," & stuinfoen.StuTel & ")" ’对数据中数据操作的具体SQL语句
cmd.CommandType = CommandType.Text
con.Open() ‘打开对数据库的连接
intResult = cmd.ExecuteNonQuery() ,执行SQl语句,并返回执行结果
If intResult < 0 Then ,如果操作成功,则返回True,失败则返回False
Return True
Else
Return False
End If
con.Close() ’关闭连接,
con = Nothing ,清楚存储
End Function
Public Function IsExist(ByVal stuinfoen As StuEntity.StudentEntity) As Boolean '根据传入的参数StudentEntity,执行数据查询命令,检查是否有要检索的内容
Dim con As SqlClient.SqlConnection = New SqlClient.SqlConnection(ContactDAL.SqlString())
Dim cmd As SqlClient.SqlCommand
Dim dalReader As SqlClient.SqlDataReader cmd = con.CreateCommand
cmd.CommandText = "select *from T_Names where ID='" & stuinfoen.StuID & "'"
cmd.CommandType = CommandType.Text
con.Open()
dalReader = cmd.ExecuteReader() If dalReader.HasRows = True Then
Return True
Else
Return False
End If
con.Close()
con = Nothing
End Function
End Class
三层之间U层引用B层,B层引用D层这样一个机制就这样构成了。
这里不得不再提一下这个实体层StuEntity,它存在于三层架构之外,但它的存在大大帮助了三层的实现,因为在层与层之间的调用上需要传递一些参数,实体类恰好就是这样一个装载参数的容器。通过上面的代码也可以看出,三个层中都引用到了实体类,而且主要用于储存和传递参数。以下是实体层的构建:
'定义实体类,存储数据表T_Names中的数据
Public Class StudentEntity '声明私有字段
Private _StuID As Integer
Private _StuMark As String
Private _StuTel As Integer Property StuID As Integer '定义StuId属性
Get
Return _StuID
End Get
Set(value As Integer)
_StuID = value
End Set
End Property
Property StuMarks As String '定义StuMarks属性
Get
Return _StuMark
End Get
Set(value As String)
_StuMark = value
End Set
End Property
Property StuTel As Integer '定义StuTel属性
Get
Return _StuTel
End Get
Set(value As Integer)
_StuTel = value
End Set
End Property
End Class
这是我对三层的理解,这个小例子的制作让我对三层有了进一步的了解,其中还有些偏差,还望各位读者多多指出,相互交流,共同进步。
vb.net小试三层架构的更多相关文章
- 微软代码示例:ASP.NET 2.0 三层架构应用程序教程系列
本文转自:http://www.codeusing.com/hi/uephee.wen/resource/view/170.aspx 资源分类:微软代码示例 更新日期:20 ...
- asp.net三层架构 及其中使用泛型获取实体数据介绍
asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...
- 关于三层架构与MVC的一些理解
刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- 【转】浅谈MVC与三层架构
首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...
- 有了门面,程序会更加体面!- pos软件基于三层架构 -09
续上篇) 大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.” ...
- 三层架构 与 MVC那点事儿
以下为转载内容: 地址 MVC与三层架构的异同点 首先先解释一下MVC. V即View.是视图的意思. C即Controler.是控制器的意思. M即Model,是模型的意思. 这三个里.最不容易理解 ...
- JDBC三层架构
三层框架: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 原理:1:数据访问层:主要是对原始 ...
随机推荐
- Python与SQLite日期时间函数的使法
SQLite的时间函数跟Python的时间函数有些许差别,所以稍做记录,供自己以后查询. 网上有将SQLite官方WIKI内容翻译成中文的文章,大家有兴趣可以搜索一下,我这里单纯记录一下个人比较常用的 ...
- python正则的中文处理(转)
匹配中文时,正则表达式规则和目标字串的编码格式必须相同 print sys.getdefaultencoding() text =u"#who#helloworld#a中文x#" ...
- 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】
[已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ...
- 公司gitlab不支持ssh时,用http提交代码免密输入方法
由于公司内网22端口被封,只能拨vpn 才能用ssh 提交代码.因此记录以下免密码http(https)提交方式. 修改项目下.git/config 将原来的 http://git.xxx.com/x ...
- Linux命令之useradd
useradd [选项] LOGIN(登录名) useradd –D useradd –D [选项] 创建一个新用户或更新默认新用户信息.useradd和adduser命令相同,adduser是use ...
- Python开发基础-Day3-列表、元组和字典
列表 列表定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序 ...
- 连接LilyPad之Windows平台的驱动
连接LilyPad之Windows平台的驱动 LilyPad和其他的Arduino控制板的不同之处是它是为电子织物和可穿戴设计的.那么,它的大小就必须要紧凑.所以,它并没有板载其他大多数板子都具有的U ...
- view加阴影和边框
UIImageView *imgvPhoto = [UIImageView alloc] init]; //添加边框 CALayer *layer = [_imgvPhoto layer]; ...
- Android:布局实例之模仿京东登录界面
预览图及布局结构参考: 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout ...
- MYSQL复习笔记8-数据完整性
Date: 20140207Auth: Jin 一.数据完整性的分类数据完整性是指数据库中数据在逻辑上的一致性和准确性.包括三种1.实体完整性又称行的完成性,要求表中有一个主键,其值不能为空且唯一地标 ...