vb.net三层实现登录例子

2024-08-26 18:38
文章标签 实现 登录 net 例子 三层 vb

本文主要是介绍vb.net三层实现登录例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看三层已经很长时间了,中间有经过了期末考试、回家等等琐事,寒假开学的我已经回想不起什么事三层了,经过了三四天的重新复习,再加上查看各期师哥师姐的博客,终于,自己完成了C#视频中的登录小例子,下面就和大家分享一下先:

首先是界面:

这样感觉真心的好看

                                                            

首先我们看一下实体层,也就是图片中的LoginModel      

Public Class ModelDim _username As StringDim _password As StringDim _email As StringDim _score As IntegerPublic Property UserName As String   '设置UserName属性GetReturn _usernameEnd GetSet(value As String)_username = valueEnd SetEnd PropertyPublic Property Password As String  '设置Password属性GetReturn _passwordEnd GetSet(value As String)_password = valueEnd SetEnd PropertyPublic Property Email As StringGetReturn _emailEnd GetSet(value As String)_email = valueEnd SetEnd Property
D层

Public Class UserDAOPublic conn As New SqlConnection("server=李卫中; database=Login;user id=sa;password=li")Public Function SelectUser(ByVal User As Model) As LoginModel.ModelDim reader As SqlDataReaderDim eUser As New LoginModel.ModelDim 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语句的具体类型,在此为Selectcmd.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 WhileReturn 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.ModelDim eUser As New LoginModel.ModelDim 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语句的具体类型,在此为Selectcmd.Parameters.Add(New SqlParameter("@UserName", User.UserName))cmd.Parameters.Add(New SqlParameter("@Score", 10))conn.Open()cmd.ExecuteNonQuery()Return eUser                                                                       '返回查询到的实体conn.Close()     '视频里讲过,用完了之后,最好是断开连接,省的占用通道               '关闭连接End FunctionEnd Class
至于这里,写完之后,看到了慕夏师傅师傅的博客,知道了,应该向C#中一样,讲数据库连接字符串单独提出来,这样,就不用每次都写,见谅

U层:界面层

Public Class frmLoginPrivate Sub frmLogin_Load(sender As Object, e As EventArgs) Handles MyBase.LoadtxtUserName.Focus()txtUserName.MaxLength = 11             '设置txtUserName 属性txtPassword.MaxLength = 10End SubPrivate Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.ClickTryDim euser2 As New LoginModel.Model             '实例化新的UserInfo,用来传递B层的实体Dim euser3 As LoginModel.Model                    '定义一个类型为UserInfo的参数,用来赋值'用户名、密码传入实体层euser2.UserName = Trim(txtUserName.Text)euser2.Password = txtPassword.TextDim mgr As New LoginBLL.LoginManagereuser3 = mgr.UserLogin(euser2)Catch ex As ExceptionMessageBox.Show(ex.Message.ToString())End TryEnd SubPrivate Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.ClickMe.Close()End Sub
End Class
B层:业务逻辑层
 
Public Function UserLogin(ByVal User As LoginModel.Model) As LoginModel.ModelDim uDao As New LoginDAL.UserDAODim sDao As New LoginDAL.ScoresDAODim eUser1 As LoginModel.ModeleUser1 = uDao.SelectUser(User)If IsNothing(eUser1.UserName) ThenThrow New Exception("密码错误或用户名不存在,登录失败")ElseeUser1 = sDao.UpdateScore(User)Return eUser1End IfEnd Function

自己编点,看看师哥师姐们的博客,结合一下自己以前学到的知识,要知道,所谓的三层其实就是一个解耦的过程,和我们后面遇到的“七层”是一样,用心看看,应该不难


从上面可以看出,我用到的是传实体,之前我问过师傅,到底是传实体好呢,还是传参好呢?(各有各的好处,不同的地方、不同的情况用不同的发放)这是师傅对我说的,虽然我还不能完全掌握使用方法的能力,但是通过练习,我没问题

这篇关于vb.net三层实现登录例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109364

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P