【三层】——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
- 【三层】——C#与VB.NET各显神通
- C#版三层实例——三大高手各显神通(实战篇2)
- 三层——vb.net版
- 三层登录——VB.NET版
- 三层登录——vb.net
- 三层登录——vb.net
- VB.NET三层架构设计与实现
- vb.Net三层架构实例——登录
- 三层架构实现登录——VB.NET版
- VB.net版机房收费系统——三层登录
- 【三层学习】——VB.NET实现登录
- VB.NET版机房收费系统——三层登录
- VB.NET三层实现实例—登录窗体
- 三层VB.NET实例
- VB.net三层登录
- VB.NET三层登陆
- 登录实例对比-C#和VB.NET实现三层
- C# 与 Vb.net 互转
- path和classpath
- 第四周上机实践项目 项目3--随机函数应用游戏(1)猜数字游戏
- hdoj--Let's go to play(模拟)
- JAX-WS实做webservice验证
- 管闲事的小明
- 【三层】——C#与VB.NET各显神通
- URI数据存储初解
- CodeForces-626A-Robot Sequence
- 最大矩阵和 HDU1081 & NYOJ 104
- Poj 3616 Milking Time【dp】
- c#接口
- ImageView 常用属性的分析
- 希尔排序
- 第四次上机实践项目-项目一-三角形类锥形-(1)