上一篇部落格用的是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 [email protected] and [email protected]"
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
下面我們來看看運作結果
經過這兩次“重寫”的三層代碼執行個體,不得不說,我對“你”更有感覺了,嘿嘿!