用三层实现登陆的实例

在前段时间中学习到了三层的技术,当时对着那个视频做例子,一步一步来,到最后的成功,感觉对三层有了一个很好的理解了。所以就非常赶紧的拿过来了机房系统的登陆来了,结果非常费劲。用自己对三层的理解敲登陆阻力非常的大,不是这里出问题就是那里出问题,而且感觉到了对VB.NET的生疏感觉。所以只能从头开始继续深入的理解三层了,结果对着视频和那些资料,费了好长时间,终于在千呼万唤中实现了VB.NET版的登陆的三层,同时也感觉到了以前对三层的理解的确实肤浅了,特别是对B层和实体层的作用有了很大的认识。接下来展示自己的代码,并总结提高。

D层:

Imports System.Data
Imports System.Data.SqlClient
Imports JIFANG.ENTITY
Public Class userDAO

    '链接数据库
    Dim conn As SqlConnection = New SqlConnection("server=192.168.24.33;database=JIFANG;uid=sa;pwd=123456;")
    Dim reader As SqlDataReader
    Public Function SelectUser(u As user)

        '绑定链接的字符串命令
        Dim cmd As SqlCommand = conn.CreateCommand
        cmd.CommandText = "select * from UserInfo where worknum='" & u.worknum & "' and password ='" & u.password & "' and userlevel='" & u.userlevel & "'"
        cmd.CommandType = CommandType.Text

        '打开数据库,并定义数据读取方法
        conn.Open()
        'Dim reader As SqlDataReader
        reader = cmd.ExecuteReader

        '读取数据
        While (reader.Read)
            u.name = reader.GetString(1)
            u.registerdatetime = reader.GetDateTime(4)
            If IsDBNull(reader(5)) Then
            Else
                u.remark = reader.GetString(5)
            End If
            conn.Close()
            Return True
        End While
        conn.Close()
        Return Nothing
    End Function

    Public Function InsertUser(u As user)
        'Try
        conn.Open()
        Dim cmd1 As SqlCommand = conn.CreateCommand
        cmd1.CommandText = "select getdate()"
        cmd1.CommandType = CommandType.Text

        reader = cmd1.ExecuteReader

        Dim cmd As SqlCommand = conn.CreateCommand
        cmd.CommandText = "INSERT INT WorkUser(userlevel,name,worknum,ondate,offdate,remark) Values(@userlevel,@name,@worknum,@ondate,@offdate,@remark)"
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add(New SqlParameter("@userlevel", u.userlevel))
        cmd.Parameters.Add(New SqlParameter("@name", u.name))
        cmd.Parameters.Add(New SqlParameter("@worknum", u.worknum))
        cmd.Parameters.Add(New SqlParameter("@ondate", reader))
        cmd.Parameters.Add(New SqlParameter("@offdate", 0 - 0 - 0))
        cmd.Parameters.Add(New SqlParameter("@remark", u.remark))
        cmd.ExecuteNonQuery()
        conn.Close()
        Return True
        'Catch ex As Exception
        'Throw New Exception("插入错误!")
        'Return False
        'End Try
    End Function

End Class

B层:

Imports JIFANG.ENTITY
Imports JIFANG.DAL
Public Class loginmannage
    Public Function userLogin(u As user) ' As user

        Dim uDAO As New JIFANG.DAL.userDAO
        If uDAO.SelectUser(u) Then   '如果查询成功
            If uDAO.InsertUser(u) Then
                Return True
            Else
                Return False
            End If
        Else
            MsgBox("denglu shibai")
            Return False
        End If
    End Function
End Class

U层:

Imports JIFANG.BLL
Imports JIFANG.ENTITY
Imports System.Data
Public Class frmlogin
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim m As New JIFANG.BLL.loginmannage
        Dim u As New user
        u.worknum = txtusername.Text.Trim
        u.password = txtpassword.Text
        u.userlevel = cmbuserlevel.Text.Trim
        If m.userLogin(u) Then
            Dim main As New frmmain
            main.Show()
            Me.Close()
        Else
            Throw New Exception("错了。")
        End If
    End Sub

    Private Sub frmlogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub
End Class

通过前面的学习和后来的实践,对B层的业务逻辑层的作用有了一个实质的认识,这个层的作用就是业务逻辑判断来的,以登陆为例,在这个例子中,从U层和D层传过来的数据跟B层没有关系,B层只是用来判断的,属于业务逻辑范畴,跟其他一切的用处无关。而实体层,就是在这三层中间来回传递信息的,把参数来来回回的传递用的。这种作用和视频中的说法一样,但是经过了登陆的实践来说就不光是一句空话了,而是对三层中的数据处理也有了认识。

    这个登陆的例子不是白做的,实践也加深了对知识的理解,不光光停留在那些口头或纸面上的作用,更重要的是做出来,把效果展示出来。从而能够一点破面,对整个软件架构的分层做法更深理解。

时间: 2024-12-10 23:16:23

用三层实现登陆的实例的相关文章

[转]C#三层架构登陆实例

很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层的划分是物理上的划分. 表示层(UI),这个最容易理解,就是用户看到的主界面. 数据访问层(DAL),也不难理解,主要是负责数据的增删改查. 业务

C#三层架构登陆实例

很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面  跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层的划分是物理上的划分. 表示层(UI),这个最容易理解,就是用户看到的主界面. 数据访问层(DAL),也不难理解,主要是负责数据的增删改查. 业务

【Servlet】Servlet简单登陆验证实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现Servlet简单登陆验证实例.结构如下 1.LoginCheck.java package com.mucfc; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annota

VB.NET版+三层实现登陆

三层已经学了一些时间了,開始认为自己能够用C#敲代码了,就用C#写了一个实现登陆的,真正再用在机房中.还是认为非常吃力的,所以.决定用vb.net敲了.以下是我用vb.net实现的登陆.能够给大家做一些參考. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl1bXV4aWEwOTIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 这是构架的

Shrio登陆验证实例详细解读

摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+tomcat7. 这里主要说了Shiro的搭建过程,Spring+SpringMVC+Mybatis的搭建过可以看这里Spring+Mybatis+SpringMVC+Maven+MySql搭建实例 整个工程免费下载: 最终效果如下: 工程整体的目录如下: java代码如下: 配置文件如下: 页面资源如

设置闪屏以及跳转到登陆界面实例演示

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Image

Shiro与基本web环境整合登陆验证实例

1. 用maven导入Shiro依赖包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>commons-logging</groupId>

ajax简单三层实现登陆---转载

http://www.oschina.net/code/snippet_557222_34061   只有连接数据库字符串改了下. public class DAL { private string connstr = "Data Source=localhost;Initial Catalog=code_data;UID=sa;Password=$wuhan888;Persist Security Info=true"; public DataTable selectDB(strin

简单三层实现登陆

Model层 [Serializable] public partial class tb_admin {   public tb_admin() {} #region Model   private string _id; private string _name;   private string _pwd; /// <summary> /// /// </summary> public string id   {    set{ _id=value;}    get{retu