【三层】磕磕绊绊说三层

          敲完了机房登陆,然后回过头来看三层以及增删改查,忽然有种柳暗花明的感觉,总是感觉自己什么都没有学会,但是默然回首,走过去的路已经被我踩在了脚下,作为垫脚石,我已经变高了一点。

三层登陆的代码:

实体层:封装信息

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"
小结:

            别人都说敲完了三层一条线,别的线就通了,但是我直到咔咔做完增删改查之后,默然回首,才对整个机房有了一点的思路和信心。七层登陆的路上,磕磕绊绊也走到了终点。还是那句话实践出真知,开始不懂不懂,当我依葫芦画瓢做完之后,一步步的运行之后,才觉得我会了。机房重构的路上,一步步前行。





评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值