强大的数据访问助手——ADO.NET
来源:互联网 发布:蜘蛛池平台源码 编辑:程序博客网 时间:2024/05/29 14:52
机房重构在敲了一条简单的登录线之后,对于“三层”理解突然感觉通了一窍。其实仔细想想也挺有意思的,每个层各司其职,通过一层调用一层来产生信息的传递。Model就像是三层之间通信的使者,很好的封装了数据,使数据在三层之间更方便的传输。要说起数据的处理,增删改查就统统包括了,其DAL层中就是定义了这四个主要的函数,ADO.NET作为强大的数据访问助手,给DAL层省了不少事情。
还记得VB当中,为了访问数据我们使用的ADO对象么?有了新朋友,可不能忘了老朋友。ADO.NET的名称就是来源于ADO,ADO是用在以往的Microsoft技术中访问数据,那为什么升级之后名字多了一个“.NET”呢??那是因为Microsoft希望表明,这是在NET编程环境中优化使用的数据访问接口。
一、理论学习(对比ADO)
回顾着ADO,让我们认识一下ADO.NET。
1、COM VS NET
ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET和ADO是两种数据访问方式。
2、在线运作 VS 离线运作
ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。这样就大大提高了我们数据库的安全,也会提高性能。
3、主要对象的对比
ADO ADO.NETConnectionConnectionCommandCommand
DataAdaper
DataReaderRecordSetDataSet
(2)再看,最后这行,两个功能相似的对象:Recordset(ADO)是一个连接或断开的(通过使用游标)的记录集合,被定义成数据表。DataSet(ADO.NET)是一个断开的记录集合,它可以作为在内存中使用的数据集。
(3)最后看,ADO.NET升级后的新对象。因为.NET的离线访问方式,于是就出现DataAdaper对象,用来充当DataSet和数据源之间用于检索和保存数据的桥梁。DataReader是一个简单的数据集,检索的数据只能读取,不能修改。对于ADO.NET这几个对象,看了下面这张图,你会更加清楚他们之间是如何协调工作的。
二、代码实现
看完了ADO.NET类的介绍,我们就利用这几个对象,编一个DAL层,看看它访问数据库的过程。
Imports System.DataImports System.Data.SqlClientImports Login.ModelPublic Class DALUser Public Function SelectUser(ByVal user As ModelUser) As ModelUser '函数功能:从user表中查信息,并以User实体返回数据库中的数据 Dim conn As SqlConnection = New SqlConnection(Util.connstring()) '数据库连接的字符串 Dim cmd As New SqlCommand '定义一个命令对象 cmd.Connection = conn '发送命令前,先取得连接的字符串 cmd.CommandText = "Select * From User_Info Where UserID=@ID and PWD=@Password" '查询实体中(UI层传入的数据)的这条记录 cmd.Parameters.Add(New SqlParameter("@ID", user.ID)) '设置参数 cmd.Parameters.Add(New SqlParameter("@Password", user.Password)) '设置参数 cmd.CommandType = CommandType.Text 'COMMAND命令的属性设置为SQL语句 conn.Open() '打开连接 Dim reader As SqlClient.SqlDataReader '定义数据集对象 reader = cmd.ExecuteReader() '执行查询操作,返回多行多列结果(如果有记录就要返回给loginuser实体对象) Dim loginuser As New ModelUser '把Userinfo表信息实例化 Try While (reader.Read()) '循环的条件是:记录存在。 loginuser.ID = reader.GetInt32(0) loginuser.Password = reader.GetString(reader.GetOrdinal("PWD")) loginuser.level = reader.GetString(reader.GetOrdinal("level")) End While Catch ex As Exception Finally If Not IsNothing(conn) Then conn.Close() End If End Try Return loginuser '把从Reader中取得数据返回到BLL层进行逻辑判断。 End FunctionEnd Class
三、小结
其实对于ADO.NET我们一点也不陌生,.NET平台为我们写好了很多的类,进行了打包和封装的工作。形成了类库,我们就用现成的就可以了。给我们带来了很多的方便。看来面向对象的语言就是比面向过程的语言简单。
- 强大的数据访问助手——ADO.NET
- 【ADO.NET】——强大的数据库桥接
- ADO.NET数据访问
- ADO.NET 数据访问
- ADO.NET数据访问的流程
- ADO.NET的数据访问对象
- ADO 和ADO.NET数据访问功能的区别
- ADO和ADO.NET在数据访问上的区别
- ADO和ADO.NET的区别(数据访问角度)
- 某书——数据访问技术的发展,以及ado.net
- ADO.NET 数据访问介绍
- ADO.NET数据访问技术
- ADO.NET数据访问对象
- 数据访问与ADO.NET
- ADO.NET数据访问技术
- 北大青鸟asp.net学习总结——ADO.net(对Sql Server进行操作的数据访问类)
- 【Asp.Net】——ADO.NET为访问数据插上了翅膀
- 数据访问:使用 ADO.NET 的最佳实践
- html设置行距
- php快速排序方法
- 在solaris上使用rsync(1):实现两个server之间的文件传输
- LeetCode-Maximum Product Subarray
- 配置Tomcat(绿色版)
- 强大的数据访问助手——ADO.NET
- 题目1156:谁是你的潜在朋友 题目12
- java实现直接插入排序
- git 如何创建你自己的Git服务器
- 使用ArcGIS Server发布我们的数据
- html超级链接(看张鹏老师的视频课程后所总结的)
- Strategy Pattern策略模式
- Codeforces 358 D. Dima and Hares
- 打基础自然是厚积薄发,这样的话我一般推荐下面四本书