加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB.Net 三层登录实例

发布时间:2020-12-17 07:55:52 所属栏目:百科 来源:网络整理
导读:首先在这里祝大家端午节快乐!在三天小长假中,三层的登录实例也完成了。实现过程因为之前敲了一个C#的登录实例,再敲.net版的时候,语法产生混乱,搞不清,不过还好磕磕绊绊也实现了。下面就和大家分享一下。 三层架构 ,就是将整个业务应用逻辑上划分为:U

首先在这里祝大家端午节快乐!在三天小长假中,三层的登录实例也完成了。实现过程因为之前敲了一个C#的登录实例,再敲.net版的时候,语法产生混乱,搞不清,不过还好磕磕绊绊也实现了。下面就和大家分享一下。


三层架构,就是将整个业务应用逻辑上划分为:UI(表现层)、 BLL(业务逻辑层)、 DAL(数据访问层)。使用三层的目的就是为了“高内聚,低耦合”的思想。

UI层:为用户提供一个交互式界面,显示和接受用户输入的数据。

BLL层:负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候,直接交给DAL处理。之后,返回必要数据给UI.

BLL职责机制:UI→BLL→UI

UI→BLL→DAL→BLL→UI

DAL层:提供基本的数据访问,不包含任何业务相关的逻辑处理。

各层之间的引用关系:DAL不引用BLL和UI;BLL需要引用DAL;UI需要引用BLL,可能会间接引用DAL。

实例:以登录为例,在用户成功登录后,赠送用户10积分,鼓励用户常常使用。

1.首先建立数据库,并配置连接数据库




2.在VS中新建项目:


在这里要注意的是,各层之间的引用关系。其中Model是一个实体类(详解请看)。在这里可以是用类UserInfo来存用户信息。DbUtil是用来存数据库连接字符串的。此处理解有点模糊。

3.代码:

D层:UserDAO

Imports System.Data.SqlClient

Public Class UserDAO
    Public Function SelectUser(ByVal userName As String,ByVal password As String) '具有返回值的函数SelectUser
        Dim db As New LoginModel.Dbutil
        Using Conn As New SqlConnection(db.ConnString)
            Dim cmd As New SqlCommand '定义SqlCommand对象
            cmd = Conn.CreateCommand()

            cmd.CommandText = "select * from Users where UserName=@UserName and Password=@Password" '参数化查询 注意语法
            cmd.CommandType = CommandType.Text
            cmd.Parameters.Add(New SqlParameter("@UserName",userName)) 
            cmd.Parameters.Add(New SqlParameter("@Password",password))


            Conn.Open() '打开数据库

            Dim reader As SqlDataReader
            reader = cmd.ExecuteReader() '执行SQL查询并得到结果,返回一个SqlDataReader对象

            Dim user As LoginModel.UserInfo '实例化一个LoginModel.UserInfo 
            user = Nothing

            While (reader.Read()) '读取值

                If (user Is Nothing) Then
                    user = New LoginModel.UserInfo()
                End If

                user.ID = reader.GetInt32(0) '读取值
                user.UserName = reader.GetString(1)
                user.Password = reader.GetString(2)

                If (Not reader.IsDBNull(3)) Then
                    user.Email = reader.GetString(3)
                End If
            End While

            Return user

        End Using
    End Function
End Class
ScoreDAO:
<pre name="code" class="vb">Imports System.Data.SqlClient

Public Class ScoreDAO
    Public Sub UpdateScore(ByVal userName As String,ByVal value As Integer)   '定义了一个没有返回值的UpdateScore函数
        Dim DB As New LoginModel.Dbutil

        Using conn As New SqlConnection(DB.ConnString)

            Dim cmd As SqlCommand '定义个SqlCommand对象

            cmd = conn.CreateCommand()
            cmd.CommandText = "Insert into Scores Values('',@UserName,@Score)"  '执行SQL插入语句
            cmd.Parameters.Add(New SqlParameter("@UserName",userName))
            cmd.Parameters.Add(New SqlParameter("@Score",value))

            conn.Open()  '打开数据库连接
            cmd.ExecuteNonQuery() '修改表

        End Using

    End Sub
End Class
 
B层: 
Public Class LoginManager
    Public Function UserLogin(ByVal userName As String,ByVal password As String) As LoginModel.UserInfo '定义了一个搞具有返回值的函数UserLogin

        Dim uDao As LoginDAL.UserDAO '定义一个LoginDAL.UserDAO的对象
        Dim user As LoginModel.UserInfo

        uDao = New LoginDAL.UserDAO()
        user = uDao.SelectUser(userName,password)

        If Not user Is Nothing Then   '判断user若不为空的话
            Dim sDao As LoginDAL.ScoreDAO
            sDao = New LoginDAL.ScoreDAO

            sDao.UpdateScore(userName,10) '更新数据
            Return user '返回
        Else
            Throw New Exception("登录失败") '当用户输入数据错误时,抛出异常

        End If


    End Function
End Class
U层:

Public Class Form1

     Private Sub btLogin_Click(sender As Object,e As EventArgs) Handles btLogin.Click
        Dim userName As String
        Dim password As String
        Dim mgr As LoginBL.LoginManager   '定义一个LoginBlL.LoginManager对象
        Dim user As LoginModel.UserInfo   '定义一个LoginModel.UserInfo对象

        userName = txtUsername.Text.Trim '将用户输入的用户名和密码传给新定义的两个对象
        password = txtPassword.Text
        mgr = New LoginBL.LoginManager
        user = mgr.UserLogin(userName,password)

        MessageBox.Show("用户登录成功!")  '弹出窗口,提示用户登陆成功

     End Sub
End Class

Model:

Userinfo:

Public Class UserInfo
    '定义了三个属性
    Private _id As Integer
    Public Property ID() As Decimal
        Get
            Return _id
        End Get
        Set(value As Decimal)
            _id = value
        End Set
    End Property

    Public UserName As String
    Public Password As String'如上所示
    Public Email As String

End Class

DbUtil:

Public Class Dbutil
    Public ConnString As String = "Server=hcy-PC;Database=Login;User ID=sa;Password=123456" ‘连接数据库
End Class

至此,实例完成。

.Net和C#语法结构有不同之处,在实现过程中要认真点,搞懂两者之间的异同,小小的例子学到的不少。接下来的学习继续努力!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读