三层——vb.net版
经过不懈的努力,我的vb.net 版的三层登陆终于实现了。下面将我的成果向大家展示一下。
原则
实体层
'定义一个共有的类,用于传递用户的基本信息
Public Class User
'这里分别定义user的三个属性,Id、Name和Password
Private User_ID As String
Private User_Name As String
Private User_Password As String
'传入和传出用户的属性值
Public Property Userid() As String
Get
Return User_ID End Get
Set(ByVal value As String)
User_ID = value End Set
End Property
Public Property UserName() As String
Get
Return User_Name
End Get
Set(ByVal value As String)
User_Name = value
End Set
End Property
Public Property UserPassword() As String
Get
Return User_Password
End Get
Set(value As String)
User_Password = value
End Set
End Property
End Class
DAL层
'用于存放链接数据库的字符串
Public Shared Function connstring() As String
connstring = "server=你数据库的名称;Database=login;Uid=sa;Pwd=你数据库的密码"
End Function
在知道了数据库这个大仓库的位置后,我们对仓库要进行什么操作呢?比如说,我们可能是要看看仓库中都有什么,进行一下查询,也有可能是把仓库中的某条数据复制出来,还有可能是将仓库中的某条数据删除掉。这些都是有可能的。那么我们怎么样才能明确的把我们的命令传到仓库,并且得到我们想要的东西呢?
'引用有关于数据库连接的dll
Imports System.Data.SqlClient
Imports System.Data
Public Class UserLoginDAL
'用一个函数调用User将得到的数据传入数据库中,通过数据取出相应的数据
Function UserSelect(ByVal User As Entity.User) As Entity.User
'定义一个链接数据库的对象
Dim cnn As SqlConnection
'定义一个输入命令的对象
Dim comd As SqlCommand
comd = New SqlCommand
'将数据库的链接路径赋值给数据链接对象
cnn = New SqlConnection(DAL.Dbconnstring.connstring())
'为comd绑定链接数据库的路径
comd.Connection = cnn
'将实体中的数据传入命令对象,用于取得相应的数据
comd.CommandText = "select * from Users where password= 'a'"
comd.Parameters.Add(New SqlParameter("@UserName", User.UserName))
comd.Parameters.Add(New SqlParameter("@UserPassword", User.UserPassword))
'选择命令输入类型,这里选择的是输入文本格式的数据
comd.CommandType = CommandType.Text
'打开数据库
cnn.Open() Dim mrc As SqlClient.SqlDataReader
mrc = comd.ExecuteReader Dim SelectUser As Entity.User
SelectUser = New Entity.User
'将取出的临时表中的数据赋值给selectuser对象,这个赋值本来应该由B层来完成,这里为了便于理解就放在这里了
While (mrc.Read())
SelectUser.Userid = mrc.GetString(mrc.GetOrdinal("ID"))
SelectUser.UserName = mrc.GetString(mrc.GetOrdinal("UserName"))
SelectUser.UserPassword = mrc.GetString(mrc.GetOrdinal("Password"))
End While cnn.Close()
Return SelectUser End Function
End Class
BLL层
说完了我们的仓库管理员以后,我们来说下我们的逻辑中枢——B层吧。B层负责的事情其实很少,就是逻辑判断。类似于裁判员。这个数据对不对,合不合法都由B层来进行判断。比如说,用户输入一个数据:我是老王,我要从数据库中删除一条数据。这时,U层将数据传给B层,那么,我们的B层就要开始判断了:
Public Class LoginBLL
Public Function Usertest(ByVal user As Entity.User) As Entity.User
'定义一个usertest,接受从U层和D层传过来的数据
Dim TestUser As Entity.User
'将D层的类实例化
Dim Usedal As DAL.UserLoginDAL
Usedal = New DAL.UserLoginDAL
TestUser = New Entity.User
'将从U层传来的数据传入D层,然后通过D层从数据库中取得相应的数据
TestUser.Userid = user.Userid
TestUser.UserName = user.UserName
TestUser.UserPassword = user.UserPassword
TestUser = Usedal.UserSelect(TestUser)
'对从D层取出来的数据进行判断并将判断结果反馈给U层 If TestUser Is Nothing Then
MsgBox("登陆失败")
TestUser = Nothing End If Return TestUser End Function
End Class
U层
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
'定义一个loginuser用于存储用户输入的信息
Dim LoginUser As New Entity.User
'调用Bll层的类进行逻辑判断,这里将B层的类先实例化一下,不然没法应用
Dim useBll As New BLL.LoginBLL
'将用户输入的数据存入loginuser中
LoginUser.UserName = txtUserName.Text
LoginUser.UserPassword = txtPassword.Text
'进行逻辑判断
LoginUser = useBll.Usertest(LoginUser)
'根据判断的结果来给用户一个反馈,是否验证成功,本来应该传回一个true 或者是fals的值的,考虑到理解的困难程度,这里就不写成那样了
If LoginUser Is Nothing Then
End
Else
MsgBox("登陆成功!")
End If End Sub
三层——vb.net版的更多相关文章
- 三层登录——VB.NET版
前言 由于下面的机房收费系统重构自己要用VB.NET进行重构,所以在敲三层登录的时候,实践了一份C#版三层登录,接着就是VB.NET版的三层登录.话说还有七层登录,一下子感觉三层又矮小了.万丈高楼平地 ...
- 三层登录——C#版
前言 前期了解三层架构主要是由UI层.BLL层和DAL层三部分构成.看到大牛们都采用三层的思想实现了登录,本菜鸟暗暗地站在了他们的肩膀上. 自己理解 对于三层自己的理解是:就像我们对一个大型的公司去找 ...
- VB.NET版机房收费系统---导出Excel表格
datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...
- VB.NET版机房收费系统---异常处理
异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...
- VB.net版机房收费系统——结账功能实现(调错与优化)
调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...
- 三层架构实例 VB.NET版
三层实例 首先发现感慨,对于三成这块,用到都是一些面向对象的特征,尤其是对象的实例化.如果你不是很注意的话,那么,你就会一头雾水,就像我一样,慢慢的雾里看花,最后也是走出来的,不过用的事件是相当的. ...
- VB.NET版+三层实现登陆
三层已经学了一些时间了,開始认为自己能够用C#敲代码了,就用C#写了一个实现登陆的,真正再用在机房中.还是认为非常吃力的,所以.决定用vb.net敲了.以下是我用vb.net实现的登陆.能够给大家做一 ...
- 三层登录实例VB.NET版详解---理论加实战篇
层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠:重复:层峦叠嶂|层出不穷.最后-量词,用于可以分出层次的事物,女孩儿强烈的第六感,三层中的层一定是 ...
- 三层登录实例VB.NET版具体解释---理论加实战篇
层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠.反复:层峦叠嶂|层出不穷.最后-量词,用于能够分出层次的事物.女孩儿强烈的第六感,三层中的层一定是 ...
随机推荐
- 乘方快速幂 OR 乘法快速幂
关于快速幂这个算法,已经不想多说,很早也就会了这个算法,但是原来一直靠着模板云里雾里的,最近重新学习,发现忽视了一个重要的问题,就是若取模的数大于int型,即若为__int64的时候应该怎么办,这样就 ...
- IIS Default Web Site : The service did not response to the start or control request in a timely fashion
IIS Default Web Site无法启动,提示错误:The service did not response to the start or control request in a time ...
- iOS开发——Xcode快捷键
1.共用的一些方法 Command + A: 全选Command + C: 复制Command + V: 粘贴Command + X: 剪切Command + Z: 撤销Shift + Command ...
- IAR for STM8 错误
一个IAR for STM8 v1.3 的工程,换到1.4版后出现如下错误 unable to allocate space for sections/blocks with a total esti ...
- STL基础知识
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...
- bootstrap tab标签页
<ul id="myTab" class="nav nav-tabs"> <li class="active"> & ...
- 数据可视化-使用EXCEL和PS制作一个复杂饼图
一个朋友让我帮忙用饼图去展现一下一堆数据,我说行,后来他给我后,我看到是一堆貌似从什么仪器中导出的一堆使用分隔符分开的文本文档,使用excel打开后如下(为了保护隐私忽略了用字母和数字代替原来的内容: ...
- 安卓 SQLite error:SQLite database locked exception while compling : PRAGMA journal_mode .....
项目中频繁的切换Tab键,会频繁地从数据库读取数据,这是报出这样的错误: 解决方法是在国外的某论坛找到的 : 在插入数据的时候,首先: SQLiteDatabase db = SQLiteDataba ...
- 计时器chronometer补充
项目中要实现关于安卓控件chronometer这部分的功能需求: 1.计时器的功能对用户答题时间进行时间统计,用户答完该题,进入下一题,计时器接续上一题的结束时间继续计时: 2.用户可以跳出答题界面, ...
- 弹出式菜单(下拉菜单)实现——PopupMenu
PopupMenu代表弹出式菜单,它会在指定组件上弹出PopupMenu,默认情况下,PopupMenu会显示在该组件的下方或上方.PopupMenu可增加多个菜单项,并可为菜单项增加子菜单. 使用P ...