ADO和DAO的主要区别

来源:互联网 发布:停用移动数据怎么关闭 编辑:程序博客网 时间:2024/05/22 15:59
ADO和DAO的主要区别是:   
      DAO   的设计思想使用一种接口来访问多种类型的数据。它在处理时使用Microsoft.Jet接口的ODBC数据源。DAO.Jet数据库服务的最独特的方面 就是它有自己的查询引擎。但它的最大弱点是由于查询服务运行于本地机上,这就意味着在处理任何远程数据请求之前,必须把所有的数据都传输到本地工作站上, 但在低速连接中调用大量数据时这是一个缺点。另外的一个缺点是它不“认识”Internet,DAO.Jet   服务是为单机和局域网(LAN)开发的。   
      ADO和DAO的最大区别是ADO使用OLEDB接口而非ODBC作为底层数据供应者的。依靠OLEDB,ADO也能够支持对非SQL数据存储的纪录集访 问,如Email和网络目录服务。OLEDB提供了比ODBC更多的灵活性和易用性。OLEDB服务的内部设计使得它能存取标准SQL类型的数据那样容易 的访问非SQL数据存储。OLEDB的一个关键特性是它可以提供对描述性数据存储的处理。通过提供某种方法来描述数据存储方式,OLEDB可以对以任何格 式存储的数据和以任何方法执行的查询提供访问途径。由于OLEDB并不要求所有数据存储都以表格、行和列的形式出现。所以与ODBC相比,它适用于更多的 数据存储类型。  


  三.ADO(ActiveX   Data   Object)技术特征   
    3.1   部件对象模型(COM)是Windows平台上的一个通用的接口标准。ADO正是建立在部件对象模型基础上的一个数据库接口部件,是当前最

流行的数据库访问技术。             
  它有以下的特点:   
  l 它是基于OLE   DB访问接口的,它对OLE   DB的接口进行了卦装,定义了ADO对象,屏蔽了底层数据库接口之间的差异。属于数据库访问当中的高层接口。   
    l ADO有选择的使用不同的底层数据库接口,以提供最高的性能。当数据库供应商提供了符合OLE   DB的数据库驱动程序时,ADO直接使用该驱动程序,这是时效率较高;当不存在这类驱动时,访问ODBC接口,这时效率较低,绝大多数数据库的供应商都提供ODBC的标准数据库驱动。   
  l ADO是一个二进制的标准,独立于任何编程语言,只要应用程序使用的语言支持访问COM对象,就可以使用ADO部件操作数据库。   
  
  3.2     ADO接口简介   
  本系统要用ADO当中的三个基本接口:_ConnectionPtr接口、_CommandPtr接口和、_RecordsetPtr接口。 _ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。用 _ConnectionPtr接口返回一个记录集不是一个好的使用方法。通常同CDatabase一样,使用它创建一个数据连接,然后使用其它对象执行数 据输入输出操作。   
  _CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以 利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选 择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用 _CommandPtr接口执行存储过程和SQL语句。   
  _RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr 接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自 己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用 _RecordsetPtr执行存储过程和SQL语句。   
  3.3     ADO当中的COM数据类型   
  在ADO当中使用的输入输出数据类型大部分是标准数据类型。但是一些参数(如:数据库字段值,出错处理信息,SQL命令等)必须使用专用的COM数据类 型:VARIANT,BSTR,   HRESULT,SAFEARRAY及相关的COM封装类:_variant_t,   _bstr_t   和_com_error。   
  l VARIANT   
  VARIANT是一个结构,该结构的成员包含数据的类型名和数据的取值。VARIANT结构中可以存放各种各样的数据,包括编程语言的各种数据类型。如: 货币,日期,所有的COM接口类型。_variant_t类封装了VARIANT数据类型,并提供了管理VARIANT的方法。在ADO接口操作当中数据 库的操作都是经过_variant_t类封装的VARIANT结构来传递的。   
  l BSTR   
  BSTR是一个包含了字符串长度值及其缓冲区的结构,_bstr_t类封装了BSTR的数据结构和管理该数据的方法。我在ADO接口中字符串的传递就是通过它来传递的!   
  l HRESULT   
  在COM当中,大多数操作要返回一个HRESULT的返回值,用来测定方法调用是否成功。它是一个32位的无符号数。例如:我在进行更新多表的操作时,如 果只对的某一个表进行了更新,而另外的表没有成功执行,类型库的封装程序就会检查到这个值,调用_com_issue_error()方法,抛出相应的 _com_error异常,我们就要对这个异常捕获,并进行相应的处理,否则,就会产生脏数据。  


原创粉丝点击