【三层】——C#与VB.NET各显神通

来源:互联网 发布:织梦 添加视频不播放 编辑:程序博客网 时间:2024/04/29 15:46

背景:

   三层登录刚开始是用C#敲的,通过走代码理解了一下,对上层之间的关系基本上算是比较清楚了,终于要开始机房重构了,但是培养计划要求是用VB.NET敲,想到这里,小编忍不住想说一句:臣妾做不到啊!之前学过VB.NET视频,但是感觉很空,没有什么实际掌握的知识,现在又让用VB.NET敲机房,对于这门新的语言自己也查过C#与VB.NET的不同,没有实际的敲过,看到的知识就不会很快的转换成自己所学到的,用生物学的术语说是只是同化,没有顺应;下面就通过三层的登录小Demo来体会一下吧。

一、通过三层登录Demo看C#与VB.NET:

 1.门外初识——表示方法不同

  C#编写的类及类库:                 VB.NET编写的类及类库:

 2.走进了解——编写语法等不同


     VB.NET 代码部分:(C#版代码 参见:【三层】-C#版登录例子)

       UI层——

        

<span style="font-family:FangSong_GB2312;font-size:18px;">Public Class Form1   Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click        '声明变量        Dim username As String        Dim password As String        Dim mgr As LoginBLL.LoginManager        Dim user As LoginModel.UserInfo        '获取用户名和密码        username = txtUserName.Text.Trim        password = txtPassWord.Text        '实例化B层业务逻辑类,将U层数据传给B层        mgr = New LoginBLL.LoginManager        user = mgr.UserLogin(username, password)        '信息提示        MessageBox.Show("登陆成功!")End Sub</span>

BLL层——

 

<span style="font-family:FangSong_GB2312;font-size:18px;">Public Class LoginManager    '声明自定义函数UserLogin,将userName,password作为参数传值并返回UserInfo类的结果    Public Function UserLogin(ByVal userName As String, ByVal password As String) As LoginModel.UserInfo        Dim uDao As LoginDAL.UserDAO        Dim user As LoginModel.UserInfo        Dim sDAO As LoginDAL.ScoreDAO        '通过D层访问数据库返回User信息到B层,调用DAL        uDao = New LoginDAL.UserDAO()        user = uDao.SelectUser(userName, password)        '逻辑判断,是否增加积分,调用DAL        If Not user Is Nothing Then            sDAO = New LoginDAL.ScoreDAO()            sDAO.UpdataScore(userName, 10)            Return user        Else            '没有该用户,抛出异常‘登录失败’            Throw New Exception("登录失败")        End If    End FunctionEnd Class</span>
DAL层(部分)——

<span style="font-family:FangSong_GB2312;font-size:18px;">Imports System.Data.SqlClientPublic Class UserDAO    '定义一种从数据库中查找用户的方法,并返回用户信息    Public Function SelectUser(ByVal username As String, ByVal password As String)        Dim db As New LoginModel.Dbutil        Using conn As New SqlConnection(db.ConnString)            Dim reader As SqlDataReader            Dim cmd As New SqlCommand            cmd = conn.CreateCommand()            Dim user As LoginModel.UserInfo            '利用参数访问数据库执行命令,而不使用拼接字符串,是为了防止SQL注入            cmd.CommandText = "select * from Users where UserName=@UserName and Password =@Password"            cmd.CommandType = CommandType.Text            cmd.Parameters.Add(New SqlParameter("@UserName", username))            cmd.Parameters.Add(New SqlParameter("@Password", password))            conn.Open()            '读取数据,执行sql语句            reader = cmd.ExecuteReader()            '不明白,求指点            user = Nothing            '利用While语句读取数据,执行查询            While (reader.Read())                If (user Is Nothing) Then                    user = New LoginModel.UserInfo()                End If                '将读取到的第一个内容转化为32位的int类型并赋值给实体层的UserInfo                user.ID = reader.GetInt32(0)                '将读取到的第二个内容转化为字符串类型并赋值给实体层的UserInfo                user.UserName = reader.GetString(1)                '将读取到的第三个内容转化为字符串类型并赋值给实体层的UserInfo                user.Password = reader.GetString(2)                '判断如果第四个有内容则赋值给实体层的UsrInfo                If (Not reader.IsDBNull(3)) Then                    user.Email = reader.GetString(3)                End If            End While            Return user         '释放资源        End Using        '关闭函数    End FunctionEnd Class</span>
Model层——

<span style="font-family:FangSong_GB2312;font-size:18px;">Public Class UserInfo    Private _id As Integer    Public Property ID() As Decimal        Get            Return _id        End Get        Set(value As Decimal)            _id = value        End Set    End Property    Public UserName As String    Public Password As String    Public Email As StringEnd Class</span>

<span style="font-family:FangSong_GB2312;font-size:18px;">Public Class Dbutil    '数据库连接语句,连接字符串=“ 服务器名称=;数据库名称=;用户名=;密码=;”    Public ConnString As String = "Server=(local);Database=Login;User ID=sa;Password=123456"End Class</span>

二、通过两门语言反观三层架构

    

总结:

     通过用VB.NET又敲一遍三层,对于三层的逻辑引用关系有近一步的认识,但对各层之间代码的所属关系不是很清楚,希望正在路过的你多多指教。



   

  

1 0
原创粉丝点击