vb.net三层实现登录例子
看三层已经很长时间了,中间有经过了期末考试、回家等等琐事,寒假开学的我已经回想不起什么事三层了,经过了三四天的重新复习,再加上查看各期师哥师姐的博客,终于,自己完成了C#视频中的登录小例子,下面就和大家分享一下先:
首先是界面:
这样感觉真心的好看
首先我们看一下实体层,也就是图片中的LoginModel
Public Class Model
Dim _username As String
Dim _password As String
Dim _email As String
Dim _score As Integer Public Property UserName As String '设置UserName属性
Get
Return _username
End Get
Set(value As String)
_username = value
End Set
End Property Public Property Password As String '设置Password属性
Get
Return _password
End Get
Set(value As String)
_password = value
End Set
End Property Public Property Email As String
Get
Return _email
End Get
Set(value As String)
_email = value
End Set
End Property
D层
Public Class UserDAO
Public conn As New SqlConnection("server=李卫中; database=Login;user id=sa;password=li")
Public Function SelectUser(ByVal User As Model) As LoginModel.Model
Dim reader As SqlDataReader
Dim eUser As New LoginModel.Model
Dim sql As String = "Select UserName,Password From Users Where UserName=@UserName And Password=@Password"
Dim cmd As New SqlCommand(sql, conn) '创建sqlCommand对象
cmd.CommandText = sql '获取SQL语句的具体内容
cmd.CommandType = CommandType.Text '获取上述SQL语句的具体类型,在此为Select
cmd.Parameters.Add(New SqlParameter("@UserName", User.UserName)) '若用成eUser.UserName则会出现参数未传递的错误提示
cmd.Parameters.Add(New SqlParameter("@Password", User.Password))
conn.Open() '打开数据连接
reader = cmd.ExecuteReader() '执行查询语句,并生成一个DataReader
'读取查询到的数据,并返回给相应的属性
While reader.Read()
'获取数据库中相应字段的数据
'数组必须从零开始读取,否则会超出其界限
eUser.UserName = reader.GetString(0)
eUser.Password = reader.GetString(1)
End While
Return eUser '返回查询到的实体
conn.Close()
End Function
Public Class ScoresDAO '这里是实例中的那个登录见证,也就是Score那部分,其实我是照葫芦画瓢,照上面写的
Public conn As New SqlConnection("server=李卫中; database=Login;user id=sa;password=li")
Public Function UpdateScore(ByVal User As Model) As LoginModel.Model
Dim eUser As New LoginModel.Model
Dim sql As String = "INSERT INTO Scores (UserName,Score) values (@UserName,@Score)"
Dim cmd As New SqlCommand(sql, conn) '创建sqlCommand对象
cmd.CommandText = sql '获取SQL语句的具体内容
cmd.CommandType = CommandType.Text '获取上述SQL语句的具体类型,在此为Select
cmd.Parameters.Add(New SqlParameter("@UserName", User.UserName))
cmd.Parameters.Add(New SqlParameter("@Score", 10))
conn.Open() cmd.ExecuteNonQuery() Return eUser '返回查询到的实体
conn.Close() '视频里讲过,用完了之后,最好是断开连接,省的占用通道 '关闭连接
End Function End Class
至于这里,写完之后,看到了慕夏师傅师傅的博客,知道了,应该向C#中一样,讲数据库连接字符串单独提出来,这样,就不用每次都写,见谅
U层:界面层
Public Class frmLogin
Private Sub frmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtUserName.Focus()
txtUserName.MaxLength = 11 '设置txtUserName 属性
txtPassword.MaxLength = 10
End Sub
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Try
Dim euser2 As New LoginModel.Model '实例化新的UserInfo,用来传递B层的实体
Dim euser3 As LoginModel.Model '定义一个类型为UserInfo的参数,用来赋值
'用户名、密码传入实体层
euser2.UserName = Trim(txtUserName.Text)
euser2.Password = txtPassword.Text
Dim mgr As New LoginBLL.LoginManager
euser3 = mgr.UserLogin(euser2)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString())
End Try
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
Me.Close()
End Sub
End Class
B层:业务逻辑层
Public Function UserLogin(ByVal User As LoginModel.Model) As LoginModel.Model
Dim uDao As New LoginDAL.UserDAO
Dim sDao As New LoginDAL.ScoresDAO
Dim eUser1 As LoginModel.Model eUser1 = uDao.SelectUser(User) If IsNothing(eUser1.UserName) Then
Throw New Exception("密码错误或用户名不存在,登录失败")
Else
eUser1 = sDao.UpdateScore(User) Return eUser1
End If
End Function
自己编点,看看师哥师姐们的博客,结合一下自己以前学到的知识,要知道,所谓的三层其实就是一个解耦的过程,和我们后面遇到的“七层”是一样,用心看看,应该不难
从上面可以看出,我用到的是传实体,之前我问过师傅,到底是传实体好呢,还是传参好呢?(各有各的好处,不同的地方、不同的情况用不同的发放)这是师傅对我说的,虽然我还不能完全掌握使用方法的能力,但是通过练习,我没问题
vb.net三层实现登录例子的更多相关文章
- delphi 三层架构简单例子(经测试成功)
delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...
- python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)
一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...
- WinForm(VB.NET)获取当前登录的用户名
运行Windows Task Manager,查看Users标签,可以看到所有登录电脑的用户,现在Insus.NET想命名用VB.NET的WinForm程序去获取当前的用户名. 获取程序简单,可以参考 ...
- js DOM操作---登录例子总结
简单的总结下用 javascript DOM 实现简易登录框例子,下面是简单的模拟登录,没有具体的登录样子,但只是模拟,整理下思路. 页面简单布局,我这个确实太简单了,看代码: <body> ...
- hashlib 简单的登录例子
hashlib例子: =============================================== import hashlib md5 = hashlib.md5() md5.up ...
- 用Struts2搭建一个登录例子【本人亲测好用】
今天尝试struts2的搭建,遇到不少的问题,终于一一解决,逛了很多地方,最终完成搭建 1.首先要下载struts2的一些组件,我下载的是版本2.3.4.1,Eclipse是4.6版本的.由于版本的不 ...
- PHP验证用户登录例子-学习笔记
1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...
- SpringMVC---简单登录例子
所需jar包aopalliance-1.0.jar.commons-logging-1.2.jar.spring-aop-5.0.0.RELEASE.jar.spring-beans-5.0.0.RE ...
- VB.NET+三层 机房收费系统之组合查询
关系组合查询已经用去了4天的时间.每天都在痛苦中煎熬,绞尽脑汁,一句代码都要瞪大眼睛看好长时间,有时候.由于两句话颠倒了.就nothing了:有时候,由于table如何可以转换成实体类型.将自己困住了 ...
随机推荐
- 通过ajax访问aspx的CodeBehind中的方法
引言 在项目中突然看到,aspx中的ajax可以访问aspx.cs中的方法,觉得很新奇,也许是lz少见多怪,不过,真的有发现新大陆似的那种兴奋,你也许知道这代表什么,学会了这种方式,代表你以后,可以建 ...
- Math.Round函数详解
有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法. Banker's rounding(银行家舍入) ...
- Summarize Series For Burying My College
Summarize Series For Burying My College For Grade ...
- 将JSON转成DataSet(DataTable)
方法1: /// <summary> /// 将JSON解析成DataSet只限标准的JSON数据 /// 例如:Json={t1:[{name:'数据name',type:'数据type ...
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(五)
我们现在对上一节中的DEMO进行改进,在服务中开启线程来执行. package com.example.service; import android.app.Service; import andr ...
- [Effective JavaScript 笔记] 第9条:始终声明局部变量
如果忘记将变量声明为局部变量,该变量将会隐式地转变为全局变量 function swap(a,i,j){ temp=a[i]; a[i]=a[j]; a[j]=temp; } 尽管该程序没有使用var ...
- Linux下读取默认MAC地址
导读MAC(Media Access Control,介质访问控制)计算机通过它来定义并识别网络设备的位置.在嵌入式linux学习中不可避免也会遇到MAC,本文主要描述了如何通过操作OTP来读取嵌入式 ...
- 序列化.to_sym
<%= link_to t('links.list'), showable_paths[@subchannel_item.showable_type.to_sym], target: '_bla ...
- Delphi与C语言类型转换对照
When converting C function prototypes to Pascal equivalent declarations, it's important to substitut ...
- HLG1744组合数学问题与lucas定理运用
The figure below shows Pascal's Triangle: Baby H divides Pascal's Triangle into some Diagonals, like ...