首页 > 代码库 > ADO和ADO.NET的区别

ADO和ADO.NET的区别


  ADO.NET是ADO的后继版本,主要目的是在.NET Framework中更容易地创建分布式、


数据共享的应用程序,它提供了一个数据访问接口,以便和OLE DB数据源进行通信,如


SQL SERVER.应用程序可以使用ADO.NET连接这些数据源,并检索、处理和更新数据。


  可以说ADO.NET是在ADO的基础上,又进一步的扩展,提供了更多新的工具,可以获取


一个真正断开连接的数据体系结构,可以将不同数据源中的数据组合起来,并优化了和


数据库交互的功能。


  下面是ADO和ADO.NET之间一些数据访问功能的区别


功能

ADO

ADO.NET

内存表示方式

适用Recordset

使用DataSet对象

表之间关系

适用JOIN查询来组装数据

支持DataRelation对象,将表关联起来

数据访问

适用.MoveNext方法顺序遍历

通过DataTableRows集合索引访问

断开访问

默认情况下,通过调用OLEDB提供程序来和数据通信

可以通过OLEDB或者SQL SERVER数据提供数据通信




 为了进一步弄清楚ADO和ADO.NET的区别和相似处,下面来看一些代码。首先是ADO代


码,我们在第一次做机房收费系统的时候,用到过这些知识。该代码获取CESHI数据库中


User表中的Recordset,并在其中遍历,输出每一个用户名:


Private Sub GetUser()
        Dim strSQL As String
        Dim strConn As String
        Dim objRS As ADODB.Recordset
        Dim strResult As String

        ‘建立连接
        strConn = "provider=SQLOLEDB;Initial Catalog=CESHI;" _
            & "data source=(local);user id=sa;password=123456"
        strSQL = "select * from btuser"

        ‘创建一个Recordset实例
        objRS = New ADODB.Recordset
        With objRS
            .cursorlocation = adUserClient
            .CursorType = adOpenStatic
            .open(strSQL, strConn)
            Do Until .EOF
                strResult = .Fields("firstname").value _
                    & "" & .Fields("Lastname").value
                .movenext()

            Loop
        End With
        objRS = Nothing


    End Sub


  在ADO中通过Recordset对象来进行操作,下面来看看在ADO.NET中是如何操作的


 Dim strSQL As String
        Dim strConn As String
        Dim objDA As SqlClient.SqlDataAdapter
        Dim objDS As New Data.DataSet
        Dim inCounter As Integer
        Dim strResult As String
        Dim objcommand As New SqlCommand


        strConn = "initial catalog=CESHI;data source=(local);" _
            & "user id=sa;password=123456"

        strSQL = "select * from tbuser"
        objDA = New SqlDataAdapter(strSQL, strConn)
        objDA.Fill(objDS)

        With objDS.Tables(0)
            For inCounter = 0 To .Rows.Count - 1
                strResult = .Rows(inCounter).Item("username").ToString _
                    & "" & .Rows(inCounter).Item("password").ToString
                MessageBox.Show(strResult)

            Next


        End With


  通过对比我们发现,其实连接字符串所使用的方法相同,不同的是把他们直接传送的


对象不同,在ADO.NET中,只不过换了下对象,比以前的操作更容易操作而已。