微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强大的数据访问助手——ADO.NET

机房重构在敲了一条简单的登录线之后,对于“三层”理解突然感觉通了一窍。其实仔细想想也挺有意思的,每个层各司其职,通过一层调用一层来产生信息的传递。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.NET
Connection Connection
Command Command

DataAdaper

DataReader
RecordSet DataSet

(1)先看,前两个一样的对象:Connection代表打开或关闭数据源,Command用来传送命令。

(2)再看,最后这行,两个功能相似的对象:Recordset(ADO)是一个连接或断开的(通过使用游标)的记录集合,被定义成数据表。DataSet(ADO.NET)是一个断开的记录集合,它可以作为在内存中使用的数据集。

(3)最后看,ADO.NET升级后的新对象。因为.NET的离线访问方式,于是就出现DataAdaper对象,用来充当DataSet和数据源之间用于检索和保存数据的桥梁。DataReader是一个简单的数据集,检索的数据只能读取,不能修改。对于ADO.NET这几个对象,看了下面这张图,你会更加清楚他们之间是如何协调工作的。






二、代码实现



看完了ADO.NET类的介绍,我们就利用这几个对象,编一个DAL层,看看它访问数据库的过程。

Imports System.Data
Imports System.Data.sqlClient
Imports Login.Model

Public 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 Function

End Class

三、小结


其实对于ADO.NET我们一点也不陌生,.NET平台为我们写好了很多的类,进行了打包和封装的工作。形成了类库,我们就用现成的就可以了。给我们带来了很多的方便。看来面向对象的语言就是比面向过程的语言简单。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr