最近开始机房收费系统合作版,然后就想着能不能把委托这个东西加到咱们的机房中来,然后就在那里查资料啊,查资料!反正查了一天多......最后,功夫不负有心人,终于搞定了!
虽然是实现了功能,但是真的不确定自己这样做到底是正确的还是错误的!这个还有待老师和师哥师姐们给出宝贵的意见!
委托是什么我就不说的了,不懂的可以看看C# 之 委托,虽然写的不是特别的详细,但是看了也能了解个大概。现在就让我们来看看具体的代码实现:
我们熟悉的D层代码:
imports System.Data.sqlClIEntPublic Class DAL Public Function Login(ByVal strUserID As String,ByVal strPassword As String) As Boolean '创建一个sqlConnection Dim conn As New sqlConnection("server=.;database=ChargeSystem;uID=sa;pwd=123456") '创建一个sqlCommand从数据库中查询该用户名和密码是否存在 Dim cmd As New sqlCommand("select count(*) from T_User where userID='" & strUserID & "' and password='" & strPassword & "'",conn) conn.open() Dim count As Integer = cmd.ExecuteScalar() conn.Close() If count > 0 Then Return True '用户名和密码正确 Else Return False End If End FunctionEnd Class
再看看新的B层:
Public Class BLL '声明委托LoginEventHandler,此时委托所代表的方法有两个参数,返回值为布尔值 Public Delegate Function LoginEventHandler(ByVal strUserID As String,ByVal strPassword As String) As Boolean Public Function Login(ByVal strUserID As String,ByVal strPassword As String) As Boolean Dim dal As New DAL '将DAL类中的Login方法添加到委托loginEventHandler Dim loginEventHandler As LoginEventHandler = AddressOf dal.Login Dim flag As Boolean flag = loginEventHandler(strUserID,strPassword) Return flag End FunctionEnd Class
最后看看新的U层:
Public Class Form1 '声明委托LoginEventHandler,此时委托所代表的方法有两个参数,返回值为布尔值 Public Delegate Function LoginEventHandler(ByVal strUserID As String,ByVal strPassword As String) As Boolean Private Sub button1_Click(sender As Object,e As EventArgs) Handles btnLogin.Click Dim bll As New BLL Dim loginEventHandler As LoginEventHandler Dim strUserID As String = txtUserID.Text.Trim() Dim strPassword As String = txtPassword.Text.Trim() Dim flag As Boolean '将DAL类中的Login方法添加到委托loginEventHandler loginEventHandler = AddressOf bll.Login flag = loginEventHandler(strUserID,strPassword) If flag = True Then MsgBox("终于登陆成功!") Else MsgBox("用户名或密码输入错误!") txtPassword.Text = "" txtUserID.Focus() txtUserID.SelectAll() End If End Sub Private Sub btnExit_Click(sender As Object,e As EventArgs) Handles btnExit.Click Me.Close() End SubEnd Class
最后看看我们的结果:
在VB.NET中事件不能用具有返回类型的委托类型来声明,这点和C#不一样!然后就是这一点点的区别就花费了我好多的精力!不过最后还是做出来了,真的非常的高兴!嘿嘿......
总结以上是内存溢出为你收集整理的机房收费系统 之 委托登录全部内容,希望文章能够帮你解决机房收费系统 之 委托登录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)