搭建三层架构
一、步骤
1.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginBLL”
如下图:
2.“添加”-“新建项目”-“VisualC#”-“类库”-“名称:LoginDAL”
如下图:
3.“添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginUI”
如下图:
4. “添加”-“新建项目”-“Visual C#”-“类库”-“名称:LoginModel”
如下图:
5.引用
右键点“解决方案”-“添加引用”,设置U层引用B层、D层,B层引用于D层(引用,单方性引用)。如下图:
6.三层建立后的效果图
如下图:
二、各层实现代码
实体层
Public Class User_Info
'定义两个私有属性
Private _UserID As String
Private _UserPassword As String
'定义属性过程,通过属性过程,允许其他类访问
Public Property UserID As String
'读数据
Get
Return _UserID
End Get
'写数据
Set(value As String)
_UserID = value
End Set
End Property
Public Property UserPassword As String
Get
Return _UserPassword
End Get
Set(value As String)
_UserPassword = value
End Set
End Property
End Class
Imports Login.Model
Imports LoginDAL.UserDAO
'业务逻辑层
Public Class LoginManager
'自定义函数,判断用户名和密码是否正确
Public Function FunctionUI(ByVal user As Login.Model.User_Info) As Boolean
'实例化实体层对象
Dim BLLUserInfo As New Login.Model.User_Info
'实例化DAL层对象
Dim UserDAO As New LoginDAL.UserDAO
'实体层对象,用来接受DAL层传来的数据
BLLUserInfo = UserDAO.FunctionDAL(user)
'判读从UI层和DAL层传来的数据是否相等,也就是用户名和密码是否相同
'通过在BLL层自定义函数的参数,把UI层用户输入的数据传到BLL层
'最后,在BLL层对数据进行处理,返回结果值
If BLLUserInfo.UserID.Trim = user.UserID.Trim And BLLUserInfo.UserPassword.Trim = user.UserPassword.Trim Then
Return True
Else
Return False
End If
End Function
End Class
D层
Imports Login.Model
Imports System.Data.SqlClient
'定义链接数据库类
Module DbUtil
'定义链接数据库字符串
'server是服务器的名称,可以是local,IP地址,计算机名称;
'database是数据库的名称;
'userid是登录的用户名;
'pwd是登录的密码;
Public connString As String = "Server=DESKTOP-U1RMOKA;database=JIFANG;User ID=sa;Password=123"
End Module
'数据访问层
Public Class UserDAO
'自定义函数,查询和接收数据库中的数据
Public Function FunctionDAL(User As Login.Model.User_Info) As Login.Model.User_Info
'定义实体层对象,接收来自数据库的数据
Dim DALUserInfo As New Login.Model.User_Info
'定义数据库记录集
'定义一个读取器
'若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
Dim conn As New SqlConnection(DbUtil.connString)
Dim reader As SqlDataReader
'具体的数据查询语句
Dim sql As String = "Select UserName,Password From User_Info Where UserName=@UserName And Password=@Password"
Dim cmd As New SqlCommand(sql, conn)
'获取SQL语句的具体内容
'获取上述SQL语句的具体类型,在此为Select
cmd.CommandText = sql
cmd.CommandType = CommandType.Text
'添加命令参数
cmd.Parameters.Add(New SqlParameter("@UserName", User.UserID))
cmd.Parameters.Add(New SqlParameter("@Password", User.UserPassword))
'打开数据连接
'执行查询语句,并生成一个DataReader
conn.Open()
reader = cmd.ExecuteReader()
'读取查询到的数据,并返回给相应的属性
While reader.Read()
'获取数据库中相应字段的数据
DALUserInfo.UserID = reader.GetString(0).ToString
DALUserInfo.UserPassword = reader.GetString(1)
End While
'返回查询到的实体
'关闭连接
Return DALUserInfo
conn.Close()
End Function
End Class
U层
Imports Login.Model
Imports Login.BLL
'显示层
Public Class FrmMain
Private Sub btnLogin_click(sender As Object, e As EventArgs) Handles btnLogin.Click '打开窗体
'实例化实体层对象
Dim UIUserInfo As New Login.Model.User_Info '用来接收用户的登录名和密码;
'实例化BLL层的对象
Dim LoginManager As New BLL.LoginManager
'将文本框中的字符串送给实体对象login.user使实体对象能够带上参数;
UIUserInfo.UserID = txtUserName.Text()
UIUserInfo.UserPassword = txtPassword.Text()
'把UI层的信息,传给DLL层中的自定义函数
'通过自定义函数的处理结果的返回值,判断用户是否登录成功
If LoginManager.FunctionUI(UIUserInfo) Then
MsgBox("登陆成功!")
Else
End If
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click '关闭窗体
End
End Sub
End Class
我的分享到此结束,不足之处,还请指教。