结束设计模式,紧接着就是vb.net的视频,但是没怎么理解,然后就是三层登录了,因为设计模式是一个一个敲的,对C#语言稍微懂一点点,但是vb.net没有实战过,一点思路也没用,前两天用c#语言实现了三层的登录,想试着用vb.net实现,但是不知道怎样分层,查了很多博客,搜了一些资料终于也实现了,其实vb.net和c#也超不多,就是照猫画虎,依照葫芦画瓢,感觉vb.net在vb和c#直接,既有和vb相似的地方也有和C#一样之处。
下面是三层登录窗体vb.net的实现版。
【UI层】
- <spanstyle="font-family:KaiTi_GB2312;font-size:18px;">PrivateSubbtnOK_Click(senderAsObject,eAsEventArgs)HandlesbtnOK.Click
- Try
- DimUserAsNewLogin.Entity.UserInfo'定义一个新的实体,用来存放用户名和密
- <spanstyle="font-family:KaiTi_GB2312;"></span>User.UserName=txtUserName.Text.Trim'存放用户名
- User.Password=txtPassword.Text'密码
- DimmgrAsNewLogin.BLL.LoginManager'实例化新的BLL,调用BLL层类LoginManager中的方法UserLogin
- User=mgr.UserLogin(User)
- CatchexAsException
- MessageBox.Show(ex.Message.ToString())'出错时系统提示
- EndTry
- EndSub
- PrivateSubbtnCancel_Click(senderAsObject,eAsEventArgs)HandlesbtnCancel.Click'退出
- Me.Close()
- EndSub</span>
【BLL层】
copy
<spanstyle="font-family:KaiTi_GB2312;font-size:18px;">PublicClassLoginManager
PublicFunctionUserLogin(ByValUserAsLogin.Entity.UserInfo)AsLogin.Entity.UserInfo
DimuDaoAsNewLogin.DAL.UserDAO'定义新的DAO
DimeUser1AsLogin.Entity.UserInfo'定义实体层
eUser1=uDao.SelectUser(User)'调用DAO中的方法SelectUser
IfIsNothing(eUser1.UserName)Then
ThrowNewException("登录失败,请检查输入的用户名和密码")
Else
MsgBox("登录成功,正在进入系统……")
ReturneUser1
EndIf
EndFunction
EndClass</span>
【DAL层】
copy
<spanstyle="font-family:KaiTi_GB2312;font-size:18px;">PublicClassUserDAO
'创建数据连接
PublicconnAsNewSqlConnection("Server=LFH;Database=LoginSanCeng;UserID=sa;Password=1")
PublicFunctionSelectUser(ByValUserAsUserInfo)AsEntity.UserInfo
DimreaderAsSqlDataReader'定义reader,从SQLServer数据库读取行的只进流的方式
DimeUserAsNewLogin.Entity.UserInfo'定义实体
'DimsqlAsString="SelectUserName,PasswordfromUserwhereUserName=@UserNameandPassword=@Password"'查询语句
DimsqlAsString="SelectUserName,Passwordfrom[dbo].[User]whereUserName=@UserNameandPassword=@Password"'查询语句
DimcmdAsNewSqlCommand(sql,conn)'数据库的执行语句
cmd.CommandText=sql
cmd.CommandType=CommandType.Text
cmd.Parameters.Add(NewSqlParameter("@UserName",User.UserName))
cmd.Parameters.Add(NewSqlParameter("@Password",User.Password))'出现问题???只传入一个参数,上接UI层的问题
conn.Open()
reader=cmd.ExecuteReader()
Whilereader.Read()
eUser.UserName=reader.GetString(0)
eUser.Password=reader.GetString(1)
EndWhile
<spanstyle="font-family:KaiTi_GB2312;"></span>ReturneUser
conn.Close()
EndFunction
EndClass
</span>
【实体层】
copy
<spanstyle="font-family:KaiTi_GB2312;font-size:18px;">Private_usernameAsString'用户名字段
PublicPropertyUserNameAsString'通过字段赋值属性
Get‘读取数据
Return_username
EndGet
Set(valueAsString)’修改数据
_username=value
EndSet
EndProperty
Private_passwordAsString'密码
PublicPropertyPasswordAsString
Get
Return_password
Set(valueAsString)
_password=value
EndProperty</span>
调试中的遇见的问题
1、传参数的问题
copy
<spanstyle="font-family:KaiTi_GB2312;font-size:18px;">'DimUser2AsNewLogin.Entity.UserInfo’不可以定义两个,分别传值,因为最后是两个参数的用户名和密码
'DimUser3AsNewLogin.Entity.UserInfo‘这样的话User2只有一个参数用户名
'User2.UserName=txtUserName.Text.Trim
'User3.Password=txtPassword.Text
'DimmgrAsNewLogin.BLL.LoginManager
'User3=mgr.UserLogin(User2)
'DimsqlAsString="SelectUserName,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'cmd.Parameters.Add(NewSqlParameter("@UserName",User.UserName))
'cmd.Parameters.Add(NewSqlParameter("@Password",User.Password))
</span>
原因:定义两个实体分别赋值,传进去的只是一个User2,但是最后需要两个UserName和Password,所以导致出现问题,因此只需定义一个实体通过属性赋值就好了
2msgBox使用问题
msgBox使用
有三个参数
Buttons As MsgBoxStyle——可选,显示的按钮,默认为0
Title As Object——可选,弹出框的标题
许多事情在没有开始时可能是我们想的太难,只要大胆去尝试,一切都可以解决,需要学习的还有很多,加油吧!
原文地址:https://www.jb51.cc/vb/257142.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。