敲完了机房登陆,然后回过头来看三层以及增删改查,忽然有种柳暗花明的感觉,总是感觉自己什么都没有学会,但是默然回首,走过去的路已经被我踩在了脚下,作为垫脚石,我已经变高了一点。
三层登陆的代码:
实体层:封装信息
Public Class UserInfo '存放用户的信息
'UserName 属性
Private _uid As String '定义UserID
'Private username As String '定义用户名称
Public Property uid As String
Get
Return _uid
End Get
Set(value As String)
_uid = value
End Set
End Property
'Password属性
Private _PWD As String
Public Property PWD As String
Get
Return _PWD
End Get
Set(value As String)
_PWD = value
End Set
End Property
'用户名姓名的属性
Private username As String
Public Property _UserName As String 'Propery 属性
Get
Return username
End Get
Set(value As String)
username = value
End Set
End Property
'设置用户名的角色的属性
Public Property _UserActor As String
Get
Return userActor
End Get
Set(value As String)
userActor = value
End Set
<strong><span style="font-size:32px;color:#ff0000;">UI层:数据显示</span></strong>
<strong><span style="font-size:24px;color:#ff0000;">U层:</span></strong>
</pre><pre name="code" class="vb"><pre name="code" class="vb">Public Class Form1
Private Sub btButton_Click(sender As Object, e As EventArgs) Handles btButton.Click
'声明,实例化
Dim eUser2 As New Login.Model.UserInfo
Dim eUser3 As New Login.Model.UserInfo
'将UI显示数据传给实体
eUser2.uid = txtUserName.Text.Trim.ToString()
eUser2.PWD = txtPassword.Text.Trim.ToString()
'实例化B层
Dim mgr As New Login.BLL.LoginManager
mgr.UserLogin(eUser2)
End Sub
End Class
B层:逻辑判断
Public Class LoginManager
Public Function UserLogin(ByRef User As Model.UserInfo) As Model.UserInfo
'Dim uDao As DAL.UserDAO
Dim eUser1 As Model.UserInfo '实例化实体层的eUser1
Dim uDao As New DAL.UserDAO
eUser1 = uDao.selectUser(User) '向D层,传入参数
'判断逻辑
If IsNothing(eUser1.uid) Then
Throw New Exception("登陆失败,请检查用户名和密码")
Else
MsgBox("登陆成功" + User.uid)
Return eUser1
End If
End Function
End Class
D层:链接数据库操作
Imports System.Data.SqlClient
Public Class UserDAO
Function selectUser(User As Model.UserInfo) As Model.UserInfo
Dim reader As SqlDataReader
Dim euser As New Model.UserInfo
Dim sql As String
'链接服务器,数据库
Dim conn As New SqlClient.SqlConnection("Server =LZJ-PC\LZJ;Database=Login;User ID=lzj;Password=123")
'查询的sql语句
conn.Open()
Sql = "select uid,PWD from User2 where uid = @uid and PWD = @PWD"
'sqlcommand 是用于数据库操作的对象,可以实现增删改查
Dim cmd As New SqlCommand(sql, conn)
cmd.CommandText = sql
'cmd.CommandType = sql
cmd.Parameters.Add(New SqlParameter("@uid", User.uid))
cmd.Parameters.Add(New SqlParameter("@PWD", User.PWD))
'打开数据库连接
reader = cmd.ExecuteReader() '查询操作
While (reader.Read()) '执行查询操作,字段非空时,执行下列操作
euser.uid = reader.GetString(0) 'reader.GetString 获取指定字符串的值。取出对0列的值.ToString是将其他类型转换为字符数据
euser.PWD = reader.GetString(1)
End While
Return euser
conn.Close()
End Function
上面的整个 过程,就是实现登陆所要执行的一系列的操作。登陆实现的就是查询的功能,其他的增删改过程都是相似的,并且在逻辑上都要涉及到查询信息,然后判断。
其他层的都是大同小异,D层,就是SQl语句有点不同。
增加:
Dim sql As String = "insert into User2(Name,Password)values(@name,@Password)"
删除:
Dim sql As String = "delete from User2 where Name =@name and Password = @password " '数据库删除语句
修改:
Dim sql As String = "update User2 set Password=@Password where Name =@User"
小结:
别人都说敲完了三层一条线,别的线就通了,但是我直到咔咔做完增删改查之后,默然回首,才对整个机房有了一点的思路和信心。七层登陆的路上,磕磕绊绊也走到了终点。还是那句话实践出真知,开始不懂不懂,当我依葫芦画瓢做完之后,一步步的运行之后,才觉得我会了。机房重构的路上,一步步前行。