vb.net小试三层架构

前端之家收集整理的这篇文章主要介绍了vb.net小试三层架构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@ 在对三层架构有了初步了解后,用vb.net做了一个小的程序,真的很小,仅仅是为了体现一下三层之间机制。下面是我设计的操作界面:

@H_404_0@还有程序集和类的分布情况,


@H_404_0@接下来是数据的设计,数据库用到的是sql Server2008


@H_404_0@ 三层架构,用简单的话来概括说就是:.U层传入UI命令和参数,然后调用B层的业务逻辑,B层中业务逻辑要用到的数据是通过调用D层访问数据库来完成.通过这样的调用,D层的检索结果返给B,B层通过业务逻辑加工、判断、处理数据,最后将处理结果返给UI层。

@H_404_0@ 程序的功能包括对表中信息的增删改查,因为都展示出来篇幅过长,就选择其中添加功能来进行阐述。接下来看代码是怎么体现出来的。

@H_404_0@ 先看一下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
@H_404_0@ 通过上面的代码,知道U层实例化B层的类ManageBLL 调用了它的AddStuManager方法 完成了该操作,它就是这样引用了B层。

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

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

@H_404_0@

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
@H_404_0@ 三层之间U层引用B层,B层引用D层这样一个机制就这样构成了。

这里不得不再提一下这个实体层StuEntity,它存在于三层架构之外,但它的存在大大帮助了三层的实现,因为在层与层之间的调用上需要传递一些参数,实体类恰好就是这样一个装载参数的容器。通过上面的代码也可以看出,三个层中都引用到了实体类,而且主要用于储存和传递参数。以下是实体层的构建:
@H_404_0@

'定义实体类,存储数据表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相关文章