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初步入门
下载并安装python后,将安装路径加到path环境变量中,即可在命令行窗口使用 help(obj) --查看帮助 import 文件名 --导入一个文件 from 文件名 import 方法 ...
- java 的Calendar类的可视化日历示例
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
- 关于matplotlib,你要的饼图在这里
Table of Contents 1 官方Demo 2 将实际数据应用于官方Demo 3 一些改善措施 3.1 重新设置字体大小 3.2 设置显示颜色,Method 1: 3.3 设置显 ...
- Sqli-labs less 1
Less-1 我们可以在http://127.0.0.1/sqllib/Less-5/?id=1后面直接添加一个 ' ,来看一下效果: 从上述错误当中,我们可以看到提交到sql中的1'在经过sql语句 ...
- matlab学习之绘制参数曲线,添加辅助线以及颜色设置
粘贴代码 % 插入参数曲线h % 插入辅助线h1 % 并设置颜色,包括画布颜色和曲线颜色 t=-pi:0.1:pi; x=cos(t)-sin(3*t); y=sin(t).*cos(t)-cos(3 ...
- javascript中的对象创建与继承
js是一门基于原型的面向对象语言,与传统的面向对象如Java,C#相比,它在对象创建及继承上有自己独特的实现方式,本文主要描述js中对象创建及继承的一些实践. 1.对象创建 方式一:工厂模式创建对象 ...
- 14年安徽省赛数论题etc.
关于最大公约数的疑惑 题目描述 小光是个十分喜欢素数的人,有一天他在学习最大公约数的时候突然想到了一个问题,他想知道从1到n这n个整数中有多少对最大公约数为素数的(x,y),即有多少(x,y),gcd ...
- bzoj 3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜
3373: [Usaco2004 Mar]Lying Livestock 说谎的牲畜 Description 兽群中总是有一些麻烦制造者.约翰知道他的N(1≤N≤100)头奶牛中有一头总是说谎,其他的 ...
- hdu1428漫步校园
#include <queue> #include <iostream> #include <algorithm> #include <cstring> ...
- node webkit (nw.js) 无法调试的结局方案之一
之前做过nw项目,当时主要内容是由别人做的!过后回到家中,自己研究了下这方面.结果发现我自己写的nw 客户端不可以调试!在网上各种找办法,没找到,深感绝望,突然看到 (https://github.c ...