上一篇博客用的是C#语言敲的三层登录实例,这篇博客就用VB.NET来敲下,正好也熟悉下代码和三层逻辑。
首先,建立相应的数据库
其次,建立如下项目,注意:U层建的是Windows窗体应用程序,其他项目则设置成类库的输出类型。
最后,在所建项目中添加代码
实体层:
''' <summary>
''' 实体层,存放多种属性
''' </summary>
''' <remarks></remarks>
Public Class Login
'定义UserName属性
Private _UserName As String
Public Property UserName As String
Get
Return _UserName
End Get
Set(value As String)
_UserName = value
End Set
End Property
'定义PassWord属性
Private _PassWord As String '
Public Property PassWord As String
Get
Return _PassWord
End Get
Set(value As String)
_PassWord = value
End Set
End Property
End Class
D层:
' 引用命名空间
Imports System.Data
Imports System.Data.SqlClient
Imports LoginMODEL
'D层,主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,需要引用实体层
Public Class UserDAO
Public conn As New SqlConnection("server=ZY-PC;database=Login;user id=sa;password =1") '创建数据库的连接
Public Function SelectUser(ByVal User As Login) As LoginMODEL.Login '传实体Login,方便对实体中的参数进行调用
Dim reader As SqlDataReader '定义类型为SQLDATAREADER的变量reader
Dim mUser As New LoginMODEL.Login
Dim sql As String = "select UserName,passWord from T_Users where UserName=@UserName and PassWord=@PassWord"
Dim cmd As New SqlCommand(sql, conn) '创建sqlcommand对象
cmd.CommandText = sql '获取SQL语句的具体内容
cmd.CommandType = CommandType.Text '获取上述SQL语句的具体类型
cmd.Parameters.Add(New SqlParameter("@UserName", User.UserName))
cmd.Parameters.Add(New SqlParameter("@PassWord", User.PassWord))
conn.Open() '打开数据连接
reader = cmd.ExecuteReader() '执行查询语句,并生成一个DataReader
'读取查询到的数据,并返回给相应的属性
While reader.Read()
mUser.UserName = reader.GetString(0) '第一个字段
mUser.PassWord = reader.GetString(1) '第二个字段
End While
Return mUser '返回查询到的实体
conn.Close() '关闭连接
End Function
End Class
B层:
Public Class LoginManager
Public Function UserLogin(ByVal User As LoginMODEL.Login) As LoginMODEL.Login
Dim uDao As New LoginDAL.UserDAO '实例化D层中新的UserDAO对象
Dim mUser As LoginMODEL.Login '定义一个类型为实体层参数,用户赋值
mUser = uDao.SelectUser(User)
'判断是否查询到记录
If IsNothing(mUser.UserName) Then
Throw New Exception("登录失败,请检查用户名和密码!") '没有记录
Else
MsgBox("登录成功,恭喜!", , "提示框") '有记录
End If
Return mUser '返回实体
End Function
End Class
U层:
Public Class Form1
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Try
'获得表现层的数据
Dim muser As New LoginMODEL.Login '实例化一个新的实体,用来传递B层的实体
muser.UserName = txtUserName.Text.Trim '将用户名传递给实体层的UserName
muser.PassWord = txtPassWord.Text.Trim '将密码传递给实体层的PassWord
'调用B层,登录判断
Dim mgr As New LoginBLL.LoginManager
muser = mgr.UserLogin(muser)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString()) '错误处理
End Try
End Sub
End Class
下面我们来看看运行结果
经过这两次“重写”的三层代码实例,不得不说,我对“你”更有感觉了,嘿嘿!