因爲之前機房重構無從下手,所以師父給我的建議是自己試着先敲三層的增、刪、改、查,機房重構大都無非是圍繞着對數據庫的操作進行展開的。實事證明,師父是正確的。現如今敲完三層登錄又在此基礎上敲了三層的增刪改查,頓時感覺對機房重構豁然開朗,嘿嘿!
由於三層登錄增刪改查這四塊內容着實太多。經一番“苦思冥想”之後,決定將這些內容分別分爲四塊:增、刪、改、查。
下面先向大家介紹“增”:
首先是建立數據庫,和之前一樣這裏就不再說明了。
接着就是代碼的編寫,如下:
實體層:
<span style="font-family:KaiTi_GB2312;font-size:24px;">''' <summary>
''' 實體層,存放多種屬性
''' </summary>
''' <remarks></remarks>
Public Class User
'定義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
</span>
U層:
<span style="font-family:KaiTi_GB2312;font-size:24px;">Public Class Form1
'查詢
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnSelect.Click
Try
'獲得表現層的數據
Dim muser As New LoginMODEL.User '實例化一個新的實體,用來傳遞B層的實體
muser.UserName = txtUserName.Text.Trim '將用戶名傳遞給實體層的UserName
muser.PassWord = txtPassWord.Text.Trim '將密碼傳遞給實體層的PassWord
'調用B層,登錄判斷
Dim mgr As New LoginBLL.SelectBLL
muser = mgr.SelectBLL(muser)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString()) '錯誤處理
End Try
End Sub
End Class
</span>
<span style="font-family:KaiTi_GB2312;font-size:24px;">'查
Public Class SelectBLL
Public Function SelectBLL(ByVal User As LoginMODEL.User) As LoginMODEL.User
Dim uDao As New LoginDAL.SqlserverUser() '實例化D層中新的UserDAO對象
Dim mUser As LoginMODEL.User '定義一個類型爲實體層參數,用戶賦值
mUser = uDao.SelectDAL(User)
'判斷是否查詢到記錄
If IsNothing(mUser.UserName) Then
Throw New Exception("查詢失敗,請檢查用戶名和密碼!") '沒有記錄
Else
MsgBox("查詢成功,恭喜!", , "提示框") '有記錄
End If
Return mUser '返回實體
End Function
End Class</span>
D層:
<span style="font-family:KaiTi_GB2312;font-size:24px;">' 引用命名空間
Imports System.Data
Imports System.Data.SqlClient
Imports LoginMODEL
'D層,主要是對原始數據(數據庫或者文本文件等存放數據的形式)的操作層,需要引用實體層
'查
Public Class SqlserverUser
Public conn As New SqlConnection("server=ZY-PC;database=Login;user id=sa;password =1") '創建數據庫的連接
Public Function SelectDAL(ByVal User As User) As LoginMODEL.User '傳實體Login,方便對實體中的參數進行調用
Dim reader As SqlDataReader '定義類型爲SQLDATAREADER的變量reader
Dim mUser As New LoginMODEL.User
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("UserName") '給@UserName賦值
mUser.PassWord = reader.GetString("PassWord") '給@PassWord賦值
End While
Return mUser '返回查詢到的實體
conn.Close() '關閉連接
End Function
End Class</span>