博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vb.net小试三层架构
阅读量:6933 次
发布时间:2019-06-27

本文共 4708 字,大约阅读时间需要 15 分钟。

  在对三层架构有了初步了解后,用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 StuDALImports StuEntityPublic 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 FunctionEnd Class

     其实B层发挥的作用其实很大,对数据加工在上面的代码中没有很好的体现,只是对D层返回的数据进行了简单的判断。这里B层实例化了D层中的类sqlDAL ,调用了它的IsExit()和AddStu()方法,就这样引用了D层,完成了自己的业务逻辑。

   无论B层的逻辑简单还是复杂,都妨碍不了D层,它只专注与对数据库数据的操作。

 

Imports StuEntityPublic 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 FunctionEnd 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 PropertyEnd Class

   这是我对三层的理解,这个小例子的制作让我对三层有了进一步的了解,其中还有些偏差,还望各位读者多多指出,相互交流,共同进步。

 

 

你可能感兴趣的文章
SSM+maven实现答题管理系统(二)
查看>>
玩转报表排名
查看>>
SQL Server 默认跟踪(Default Trace)
查看>>
[剑指offer] 字符流中第一个不重复的字符
查看>>
平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
查看>>
Source Insight 3.X 标签插件v1.0发布
查看>>
百度AI生态方法论升级,AI开放平台深入7大细分领域
查看>>
Linux下配置Golang开发环境
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
《Learning Scrapy》(中文版)第11章 Scrapyd分布式抓取和实时分析
查看>>
[Python]一行代码判断请求参数是否正确
查看>>
gulp前端自动化工具的快速入门案例
查看>>
Java_数据交换_Jackson_用法入门
查看>>
GoCD 19.2.0 发布,ThoughtWorks 的持续集成引擎
查看>>
H3C大数据产品介绍
查看>>
Kafka-0.10.0.0 集群高可靠实验
查看>>
微信程序开发系列教程(三)使用微信API给微信用户发文本消息
查看>>
window上安装mysql数据库
查看>>
Python全栈工程师(多继承、函数重写)
查看>>
Spark2.1.0之内置RPC框架
查看>>