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如何可以转换成实体类型.将自己困住了 ...
随机推荐
- powerdesigner设置表主键列为自动增长。
powerdesigner 版本12.5 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties ———>columens ,双击 ...
- CrtCtl (客户端认证的证书、私钥)的控制
crt (证书文件) 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 客户端认证的证书.私钥. 中文名 crt 性 质 证书文件 类 型 客户端认证的证书. ...
- centos6.4yum搭建lamp环境
1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 8 ...
- Java转义符\\|
http://blog.csdn.net/stewen_001/article/details/22871737 看一段程序 String t = "a||b||c||d"; St ...
- 为win7添加ubuntu的启动引导项
利用MBRFix删除ubuntu的开机引导界面,恢复成win7引导之后,为win7添加ubuntu的启动引导项: 直接利用EasyBCD添加一个Grub2的引导项即可 参考:http://mathis ...
- 【Django】Django 文件下载最佳实践
代码: from django.http import StreamingHttpResponse def big_file_download(request): # do something... ...
- InnoDB主键设计
InnoDB是clustered-index table,因此对于InnoDB而言,主键具有特殊意义. 可以通过主键直接定位到对应的某一数据行记录的物理位置,主键索引指向对应行记录,其他索引则都指向主 ...
- MVC 详细说明
.NET MVC执行过程: 1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 在使用MVC中是由IgnoreRoute()辅助方法对比成功的,会导致程序直接跳离 ...
- placement new讲解
[本文链接] http://www.cnblogs.com/hellogiser/p/placement-new.html [分析] 首先我们区分下几个容易混淆的关键词:new.operator ne ...
- 29.调整数组顺序使奇数位于偶数前面[ReOrderArray]
[题目] 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.要求时间复杂度为O(n). [分析] 如果不考虑时间复杂度,最简单的思路应该是从头扫描这个 ...