ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 24975|回复: 34

[原创] ADO学习笔记之一ADO数据访问技术与连接字符串(完成)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-1 10:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:ADO技术
本帖最后由 liu-aguang 于 2015-1-3 16:30 编辑

      ADO数据访问技术与连接字符串
  本文档探讨的并不是罗列各种连接字符串.有相关网站提供了丰富的连接字符串样本,:
  我们可以尝试不同的字符串来达到连接成功目的,然而面对如下的疑问我能做到心中有数吗?
       1.     当数据源,系统或应用程序等版本升级的时候,我需要考虑修改字符串吗?
       2.     不同的字符串可以访问同一数据源.我能确定哪种字符串是当前环境中最优化的吗?
       3.     试图让编写的代码在不同的环境中应用,我用哪种字符串可以带来最大的性能和兼容性?
       4.     ADO应用程序出现了运行问题,我能确定是字符串的原因吗?或者能判断是字符串的哪一部分有问题?......
  凡此种种,经常得到的回答是:那样做更好!那样做才行!为什么呢?本文的主题试图从ADO的数据访问技术角度去找到答案.
----------------------------------------------------------------------------------------------------------------------
先说点儿题外话:
  各种编程语言利用ADO(ADO.net)访问各种数据库或文档的功能是强大的,技术是复杂的.而对于编程者来说,ADO的使用却是简单的.VBA中你甚至可以在半天之内学会它的基本应用,并用它来处理自已的一些事务.然而,在VBA中学习ADO是必须的吗?笔者的看法:是,也不是.
  在MicrosoftOffice体系中,各种数据格式文档(.accdb,.xlsx,.docx)之间是可以相互查询或操作的,VBA提供的方法和各种对象就能圆满完成任务.象操作查询文本文件之类的文档,VBA也提供了一些简单的方法.然而,在下面情境下,ADOVBA访问外部数据的唯一方式,也是最便捷的方式,:
当用Excel来管理的数据已成为海量数据,必须借助后台数据库来支持时.Excel与数据库的相互访问必须用ADO方式;
所有对非Microsoft Office数据源的访问;
即使是对Microsoft Office数据源的访问,使用ADO多数情况下可以简化代码,并带来更好的性能.
….使用通过Office界面控件导入外部数据,也是office程序内置的ADO技术.
进入主题

   连接字符串(ConnectionString)ADO连接语句中不可或缺的属性之一.ADO中首先成功地建立连接是访问数据源的基础,而连接字符串正确与否是连接的关键因素;不仅如此,它还直接影响连接的性能.说通俗一点可以简单搭建一条独木桥也可以架设一条高速路;更为重要的是在访问某些数据库时,不同的成功连接将影响后续功能能否使用的问题.
要做到正确选择字符串,在众多可用字符串中分辨出合适的字符串,一句话要做到使用字符串胸有成竹”,必须深入到ADO内部,了解其工作原理.事实上,不只是字符串的问题,真正理解ADO的各种属性,参数,游标等的使用,也得先了解ADO的数据访问技术.笔者N年前无聊之时,混了过网络工程专业,毕业后干的是与IT无关的杂事.而对编程基本上是门外汉,谈所谓访问技术也只是大概,不正确之处,请兄弟们海涵指教.
  本主题包含两部分:
一.  ADO数据访问技术
二.  ADO连接字符串

评分

9

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-1 10:28 | 显示全部楼层
本帖最后由 liu-aguang 于 2015-1-4 09:12 编辑

       一.  ADO数据访问技术概述(Microsoft® ActiveX® DataObjects)
(一)MDAC/WDAC
    有一天,我第一次到一个高大上朋友家作客,刚到小区单元门口看到墙脚处有一个封闭建筑体.我问:这是什么呀?,好缺德还做一鞋柜.朋友说,这是我们单元的一个信息资源接口.各家各户使用电视/电话/网络等不需要分别到相关服务部门去直接连接了,可以从这里简单连接.这个接口里面包含多个组件接口,如网络接口/电视信号接口等,它们分别负责与不同上级连接.
    就说网络组件接口吧:如果你家想上网就用它的网络接口,网络接口上又有多种接口,根据你的需要可以使用联通/电信或广电等.不同的网络提供商,又提供多种服务,比如过气的拨号连接或快要过气的ADSL连接或者目前最先进的光纤连接.使用它们只要一个电话,连接管理人员就会来帮你搞定连接.不过电话地址(连接字符串)可不要搞错……,打住吧.我心想,有一天我单元门前的接口要求增加一个与外星人聊天的接口.
   
   微软老大绝对是世界上最先住公寓的先富起来的那部分人”.兴许受此启发,为了方便不同应用程序(比如EXCEL程序,VBA程序,C/C++等等)以统一方式访问不同的数据源(比如SQL Seviver/xlsx/txt),老大首先提出ODBC概念,它的学名是开放数据库互连(Open Database Connectivity,ODBC. 由SQL Access Group,X/Open(目前为The Open Group的一部份)以及ISO/EIC所提出的Call Level Interface(CLI,调用层次接口)接口规格).说得有点高大上,实际就是想在它的操作系统中做一个” 鞋柜”. 操作系统中ODBC管理器是它的第一个实现.ODBC的框架中包含有多种与连接相关的功能和服务组件.有了它,基于windows平台开发的应用程序就不用直接与数据源打交道.它只需要打(open)个”电话(连接字符串)”给ODBC管理器,数据源的ODBC驱动程序解析这个传过来的电话地址,然后与对应的数据源打交道.不同的数据源微软提供不同的驱动程序.数据源商家也可自己提供自己的驱动程序.用什么驱动程序由ODBC提供者根据应用程序的”电话”决定.(应用程序开发人员能够利用ODBC所开放的API调用,经由ODBC Driver来进入数据库进行访问以及处理工作).

    后来,数据源类型结构越来越复杂,应用程序的要求也变得五花八门,兼容/性能/效率/简捷的呼声让微软心烦意燥,只有不断修正升级ODBC管理器,也同时升级相应的ODBC驱动程序.但无论如何野鸡变不了凤凰, 终于在某年某月某天,一个天才的跟班提了一个建义:放弃ODBC,重新组建数据访问结构体系.于是他们搞了一个更先进的玩意儿叫OLE DB接口.不过很多公司花巨资开发的基于ODBC开发的软件大量存在,微软怕得罪他们.所以OLE DB与ODBC直到现在也还共存,两者实施”一国两制”政策,并可相互沟通.
     与ODBC不同的是,OLE DB接口不是用驱动程序去与数据源交流,而是用OLE DB提供者(OLEBD Provider),OLEDB提供者分为OLEDB服务提供者及数据提供者,它是一个DLL文件.对于简单的数据源如Office文档,文本文件或低版本的系统数据库,只需要数据提供者;而对于像SQL Server这样高版本更复杂的数据库,就同时需要两种服务提供者.不同的数据源有不同的提供者,后面的示意图中我们可以看到.OLEDB提供者,有的由微软提供特别是在初期,有的由数据库商家提供.
      OLEDB提供者的开发者为了不让原来的程序员失业(玩笑话,通过ODBC访问某些数据库有当时不可替代的作用),方便应用程序也可以用ODBC方式访问数据源,所以也同时免费搭配了相对应的ODBC驱动程序.所以使用OLE DB接口的应用程序,即可以OLEDB提供者直接访问数据源,也可以继续调用ODBC管理器,使用OLE DB的ODBC提供者,让ODBC驱动访问数据源.

    再后来,兴许有一天老大内急,在男厕所里遇见了一个美女.老大既难堪又生气,认为有伤诶家体面,后来小秘告诉他,该美女使用OLEDB编程太艰辛,已经累得两眼发花了.于是,老大召集人马,研究简化对OLEDB的使用,于是有了ADO直到目前的ADO.Net.


 把上面的功能整合起来,微软把它们打包植于操作系统中,称之为MDAC(Microsoft Data Access Components),Windows vista版开始,改名WDAC(WindowsData Access Components),MDAC是什么,老大说这是堆栈.
   下面是前不久的MDAC/WDAC结构体系,它来自于MSDN.当前的体系中包含.NET框架,可以使用ADO.net访问技术.并没有在图中.
MDAC.gif



从该示意图可以看出:
  1.  从上向下,第一层是需要数据的应用程序(如VBA)或远程访问程序
  第二层就是单元门口那个难看的东东了(MDAC).实际上里面还有很多乱七遭八的东西,有的太陈旧已经清理出去了,如JRO/MSDAOSP;有的在正在被清除,如在win7 64位系统中,不再有DAO/RDS/JET等的64位版本了,所以64位的应用程序不能在64位操作系统中使用它们.(说明它仍然提供32位的版本,所以32位的应用程序仍可使用)
        要提醒大家的是,目前基于internet的数据库访问,不再使用ADO或RDS技术,而是使用ADO.Net.
        第三层是应用程序所要访问的各种数据源.
       2. 我们只看”Your Appliction”,从右到左向下的”竖线”, 它描述了应用程序访问数据源的各种方式:
      (1)  应用程序----ODBC---数据源:  直接调用ODBC管理器(ODBC DriverManager),利用ODBC驱动程序(ODBC Drivers)访问数据源;现在恐怕只有那帮”低层”打工仔在用了.
      (2)   应用程序—ADO—数据源:  利用ADO或ADO.net(ADO是VBA唯一的访问非Office数据库方式)接口,访问数据源.这是目前各种编程语言较普遍的访问管道;
      (3)   应用程序—OLEDB核心服务--OLEDB Provider—数据源:  调用OLE DB核心服务,访问数据源(较低级语言使用);
      (4)   应用程序—OLEDB Provider—数据源:  直接调用OLE DB提供程序访问数据源(较低级语言使用).
      3.  不知你注意没有,上面(2)(3)(4)都是使用OLEDB技术访问数据源,从图中证实了前面的说法,它们有两种方式访问数据源:
        其一, 最终利用OLE DB的提供程序(OLE DB Provider)访问数据源;
        其二, 调用ODBC管理器,利用OLE DB的ODBC提供程序(MSDASQL),让ODBC驱动程序访问数据源.
     4. 前面多次提到,后续内容也会用的两个重要概念简单介绍一下:
     (1)  数据消费者:它是需要数据源中数据的程序或对象;比如,可以说我们的VBA程序是数据消费者.
       (2)  提供者(Provider):也叫提供程序.有多种服务提供者和数据提供者,它能在本地访问数据,从数据源中直接获取数据,并以表格形式呈现(显露)给消费者的一个OLEDB组件.Microsoft.Jet.OLEDB.4.0.或 MSDASQL

   好了,上面部分是铺垫,下面说说这部分内容的主题ADO数据访问技术.





评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-1 10:31 | 显示全部楼层
本帖最后由 liu-aguang 于 2015-1-3 11:19 编辑

()ADO数据访问技术
    ADOMDAC中的一个组件,它的前身是DAO/RDO(是ODBC的包装,它们已经谈出).ADO是在OLEDB的基础上开发出的一个比直接访问OLEDB更简单的一个通用数据访问接口.它是OLEDB的包装, 一座连接应用程序和 OLE DB 的桥梁,有利于编写数据访问应用程序.在本地数据库访问方面,它是目前最前沿的技术.也支持客户端/服务器访问.不过,现在的在分布式应用程序中,如基于WEB的开发程序使用的是更先进的ADO.NET技术(可惜VBA不支持,但愿有一天出现一个VBA.NET).
    下面是ADO(ActiveX Data Objects)组件的数据访问体系,它也来自MSDN.
ADO.gif



       这个示意图中,最上面是ADO(包括RDS)入口,我们的应用程序与之交接.第二层的内框中是ADO把OLEDB打包进自己体内的组件,包括:OLEDB服务提供者,组件和核心服务.它们的工作对应用程序来说是透明的.ADO编程者可以无视的东西.但如果要真正搞清楚ADO工作原理就得对它们仔细研究,而这已超过了本主题内容.
现在看第四层黄色部分,这是与连接字符串直接相关的内容了.从这里分为两条线:
        一条线是右面四个黄色小框,它们利用不同的数据提供程序访问或操作不同数据库.例:假如在代码连接字符串中使用的是”Provider=MicrosoftJET OLEDB.4.0”,那么ADO(实际上是OLEDB)连接管理器就会自动调用Jet提供者(Microsoft Jet 4.0 OLE DBProvider),处理Jet数据源(如.mdb/.xls/.txt等).这个数据提供者把从数据源中获得的数据以表的形式显露给上层调用它的消费者.其它小黄框也如此.不过这个图并没有列出所有的数据提供者如大家常用的ACE OLEDB12.0 Provider.
        它的另一条线是左边第一个黄色小框,当我们的连接字符串使用ODBC方式时,连接管理器就会调用ODBC提供者(ODBCProvider),这是个总称,它里面包括具体的提供者(MSDASQL),提供者利用相应ODBC驱动程序(如jet Driver)与数据源交流,仍然以表的形式显露给调用它的消费者.
        ADO工作的时候,是使用ODBC提供者,还是OLEDB提供者?提供者利用哪个驱动程序,与哪个具体的数据源连接交互?在连接的过程中,要求连接有何种属性,使用OLEDB的哪些服务?这就是我们代码中连接字符串要传递的信息.
   下面进入第二部分ADO连接字符串.


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-1 17:27 | 显示全部楼层
本帖最后由 liu-aguang 于 2015-1-4 14:49 编辑

二.  ADO中的连接字符串
     在代码运行OPEN语句时,如果当前没有可用的连接,连接管理器就会根据OPEN语句提供的连接字符串,进行新的连接.所有的连接信息都隐含在连接字符串里.连接字符串用来指定连接属性.由提供程序(Provider)解析,数据源将应用连接字符串中指定的选项并打开连接,

1.     连接字符串的格式
    连接字符串只有按约定的格式提供,才会被提供程序(Provier)正确解析.连接字符串是关键字和关联的值的列表;每个关键字标识特定的连接属性;各键/值对之间用分号隔开.
    关键字1=1;关键字2=2
    关键字不区分大小写,并将忽略键/值对之间的的空格.不过根据数据源的不同,关联的值可能是区分大小写的(这一点要引起注意,特别是在SQL Server中). 任何包含分号/单引号或双引号的值必须用双引号引起来.以上这些是大多数提供程序要求的准则.
    尤其要注意的是:不同的提供程序(Provider),其字符串语法有一些差别.

    2.     ADO访问数据源所用的两类字符串
      ADO可以使用两种方式与数据源连接:一是OLEDB数据提供程序;,Microsoft OLEDB Provider For Jet/Microsoft OLEDB Provider For SQL Server. 这种方式是OLEDB提供者直接访问数据源.
       二是ODBC方式.  Microsoft OLEDB Provider For ODBC Driver. 这种方式是使用ODBC驱动程序访问数据源.
       32位的应用程序中,一般都同时支持两种方式的访问,所获得的功能基本等价. 但两种方式的连接字符串语法不一样.以及它们对连接和数据源的初始化的方式不一样.举个例子:用JET访问EXCEL,大家知道如果是OLEDB提供者,在连接字符串中可用HDR=YES或NO来指定第一行的特征,而ODBC方式就不支持在连接字符串中指定.
 举一例子,假如使用JET访问EXCEL:
    使用OLEDB提供者的连接字符串为:
 Provier=Microsoft.Jet.OLEDB.4.0;DataSource=带路径的文件名;Extended Properties=Excel 8.0
    使用ODBC方式的连接字串为:
 Driver={Microsoft Access Driver (*.xls)};DBQ=带路径的文件名
 或
 DNS=配置好的DSN.
    下面进一步分析这两种方式的特点及差异
 (1)  使用OLEDB数据提供程序
    该方式的访问中路径是:应用程序—ADO—OLEDB提供程序数据源
    这种方式是微软推荐的方式,ODBC方式要快一点.它的连接字符串中一般包括三部分:
    一要明确使用的数据提供者或服务提供者Provider(在访问某些数据库时要求分别给出服务提供者和数据提供者);
    二要指明服务器或数据源的中路径名;不同的数据源的要求有差异;如访问文本文件只需要指定文件所在的文件夹,而SQL Server 有时要求同时指定服务器
    三如果不是系统数据库要指明扩展属性(Exteded Properties);
    另外,如果是访问数据库常常要求用户名和登陆数据库的密码或安全类型.目前一些复杂的数据库,其连接字符串中的关联值或键/值对特别多,所以在具体应用环境中,要仔细去参详其义.

下面举几个例子,更多的具体要求,你必须去查阅提供者供应商的说明手册:
1: 访问XLSM:
    Provier=Microsoft Ace OLEDB.12.0;Data Source=带路径的文件名;Extended Properties="Excel 12.0 Macro;HDR=NO";
    提示:本例中Extended Properties是关键字,后面是它的值.该值包含多个项,项之间也要用分号(;)分隔.并且要求把该值用双引号包围起来.另外如果在VBA中,由于整个字符串要求用双引号包围,所以该值的双引号要转义,即用一对双引号表示一个双引号.后续就不解释了.
例2: 访问文本文件(如txt,csv等),数据源只要求指明文件所在的文件夹:
    Provier=Microsoft Ace OLEDB.12.0;Data Source=文本文件所在文件夹;Extended Properties="text;HDR=YES;FMT=Delimited";
例3: 访问数据Access
   没有密码:
    Provier=Microsoft Ace OLEDB.12.0;Data Source=带路径的文件名;
   有密码:
   Provier=Microsoft Ace OLEDB.12.0;Data Source=带路径的文件名;Jet OLEDB:Database Password=密码;
例4 :访问非Office数据库(如SQL Server/Oracle/MySQL)情况特别复杂,请参考提供商的说明.
   举一例要求提供服务提供者的例子,使用SQL Server Native Client Provider提供者访问SQL Server 2012:
    Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI11;Data Source=服务器地址;Initial Catalog=数据库;User Id=账户名;Password=密码;
   以上只是连接字符串中的冰山一角,目的是提示你当你访问不同数据源时要思考的方向.尤其是SQL Server,字符串中的关键字特多,不同关键字的组合与取舍直接影响后面的功能.

(2)  使用ODBC方式
     该方式的数据访问路径为: 应用程序—ADO—OLEDB的ODBC提供程序—ODBC驱动程序—数据源.它又有两方式:
A.   无DSN连接
   连接字符串一般要求要指明使用的驱动程序名称,数据库服务器或数据库路径名,以及登陆数据库的用户名和密码.例:
   例1:使用Ace OLEDB12.0的ODBC驱动程序访问Access2010数据库:
   Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=数据库路径名;Uid=Admin;Pwd=;
  例2:使用Microsoft SQL Server ODBC Driver访问SQL Server 2000:
  Driver={SQL Server};Server=服务器地址;Database=数据库;Uid=用户名;Pwd=密码;
  在连接字符串中,没有指明OLEDB提供者,它们都默认用MSDASQL提供者.大括号里是ODBC驱动程序名字,使用它们的先决条件是你的电脑里必须安装有该驱动程序.我们可以在ODBC管理器中去查看自己电脑里安装了哪些ODBC驱动程序,它们的名字是什么以及版本号.(控制面板--管理工具--数据源--驱动程序;在64位操作系统中查看32位驱动程序要用32位的ODBC管理器,请双击下列文件:C:\windows\sysWOW64\odbcad32.exe)
B.    有DNS连接
     访问EXCEL连接字符串:
     DSN=DSN名;
     访问带密码的Access数据库:
     DSN=DSN名;UId=Admin;Pwd=;
    说明:
    DSN名,是ODBC驱动程序的别名,有时也叫DSN数据源.是用户用ODBC管理器配置时自定义的.在配置中如果已经指定了数据源路径和文件名,则连接字符串中可不用带数据源路径名,也可带数据源路径名或其变量; 如果没有指定,则必须带数据源路径文件名.形如:
    DSN=DSN名;Dbq=数据源路径名;
    同样,没有在字符串中指定ODBC提供者,默认用MSDASQL.如果在字符串中明确指定即:Provider=MSDASQL,其效果一样.
  这种方式只能在已经配置好DSN的电脑上使用.如果要在其它电脑上使用,可把DSN存为文件.使用这种方式的优点是可以用ODBC管理器非常直观地对连接或数据源进行诸多初始化设置.
     ODBC方式的连接字串中还可以有很多属性关键字/值对,但由于自身缺陷,多数都是不起任何作用的.

   在接下来的最后一部分谈一谈各种常用数据提供者(Provider)作用数据源的范围,功能强弱,以及在xp/win7 32/64与Office 32/64中使用的最优版本及局限

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-3 10:19 | 显示全部楼层
本帖最后由 liu-aguang 于 2015-1-4 15:35 编辑

3.     连接字符串中的提供者(Provider)和ODBC驱动程序

    连接字符串中Provider关键字的值即是需要指出提供者. ODBC访问方式的连接字符串中如果不显式写出, ADO连接采用默认的Provider= MSDASQL.
    OLEDB提供者(OLEDB Provider)是连接性能高低的重要因素,同时各自有访问数据源的范围.所以必须根据你的系统和应用程序版本选择相适应的OLEDB提供者.
    ODBC访问方式, Provider不是需要我们关心的事, OLEDBODBC驱动程序名称(代表版本)决定连接性能高低. 我们必须选择与应用程序相对应的驱动程序名称,以提高连接性能.
    一般而论,OLEDB提供者与它对应的ODBC驱动程序是同时推出和升级的,值得提醒的是当升级时它的提供者值需要特别跟上版本号,而其ODBC驱动程序名却不会随升级而变化.
    OLEDB提供者及对应ODBC驱动程序在很早以前是由微软提供的.并随windows系统一并推出.到后来提供者及驱动程序就由各自数据库商家自己开发设计,随数据库的安装而载入系统中.比如Microsoft Office 2007以后版本,必须安装了相关应用程序后,系统才会有它们的提供者和驱动程序.
     提供者版本升级具有向后兼容性, 微软推荐使用数据库生产商提供的提供者和驱动程序. 下面简单分类介绍常用提供者:

(1)  微软随系统安装的提供者和驱动程序
       是否微软为了表明自己开发的OLE DB接口,可以访问任何类型的数据库,很长一段时间都是微软为各种数据源开发提供者. 并随系统发布. 你可以在32位的ODBC驱动管理中看到他们的ODBC驱动程序,从而知道所有数据提供者.微软也开发了一系列服务(工具)提供者,我们很少用,下面就不介绍.

A.   Microsoft OLE DB Provider for ODBC
      Provider=MSDASQL
     这是为ODBC访问方式专门开发的公用提供者.它与一般的数据提供者不同,它不直接与数据源打交道,而是调用ODBC驱动程序去做. 笔者发现无论是微软还是数据库生产商开发的ODBC驱动程序,直到现在都是用的MSDASQL提供者.
    在连接字符串中,即使用ODBC驱动程序升级,提供者的名称(MSDASQL)不变.注册信息表中发现,它还有一个等价的带版本号的名称,即: MSDASQL.1.

B.  Microsoft OLE DB Provider for Jet
    Provider:
        Microsoft.Jet.OLEDB.1.0---Microsoft.Jet.OLEDB.4.0
    与之对应的ODBC驱动程序是一个系列,不同类的数据源有不同的名称.如访问Excel的ODBC驱动程序名称:Microsoft Execl Driver (*.xls); 访问文本文件类的名称: Microsoft Text Driver (*.txt; *.csv)
    这个提供者是从DAO时代开始就有了,这个提供者或驱动程序1.0版本只支持Access数据库,随着版本的升级扩大到可以访问Office 2003以前的所有office数据源.也可以访问文本文件和非Access数据库(FoxPro), 还可以访问一些已经淘汰的数据源.
    JET 4.0提供者和驱动程序是最后一个32位版本,微软已经不在支持其升级.不过它们仍然存在于Windows各版本中(包括64位的版本), 32位的应用程序可以继续使用它.但64位的应用程序则不在支持.如VBA7.1 64位版本不能使用它了.这是微软淘汰出局的产品.

C.  Microsoft OLE DB Provider for SQL Server
    Provider=SQLOLEDB
    其对应的ODBC驱动程序名: SQL Server
    这是微软最早专门为SQL Server数据库开发的提供者和驱动程序,功能不太完善,但对于支持SQL Server 2000功能已经具有非常完整的功能了. 微软为它准备了64位的版本.一些SQL兼容数据库也可使用但没必要.SQL Server 2005开始,官方推荐使用SQL Server Native Client. 这是它的驱动程序名字,其提供者的值开始版本为SQLNCLI.1.以后又升级多次,修正了一些缺陷. SQL Server Native Client OLEDB是取代MDAC/WDAC的接口,需要单独安装,ADO只能使用它的部分功能.
    官方建义: 如果不需要使用在 SQL Server2005以上版本中引入的任何新功能,则不需要使用 SQL ServerNative Client OLE DB 访问接口;您可以继续使用当前数据访问接口(通常是 SQLOLEDB)。 如果要增强现有应用程序的功能,并且需要使用在 SQL Server2005 中引入的新功能,则应当使用 SQL Server Native Client OLE DB 访问接口。

D.  Microsoft OLE DB Provider for Oracle
    Provider=MSDAORA
    其对应驱动程序名: Microsoft ODBC for Oracle
    停止升级,没有64位版本.
    系统还提供了几种不太常见,总之笔者没有使用过的提供者.就不介绍了.
(2)  数据库生产商提供的提供者
     现在成气候的数据库生产商都自己提供Proivder.这类提供者必须随数据库的安装而安装,或安装生产商提供的独立安装组件.

A.   Microsoft Office的提供者
     Provider:
       Microsoft Ace OLEDB.12.0---Microsoft Ace OLEDB.15.0
     其对应的驱动程序名也是一个系列.值得注意的是它们与Jet for ODBC驱动程序名的差别,如访问Excel:
           Jet fo ODBC: Microsoft Excel Driver (*.xls)
           Ace for ODBC: Microsot Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
     这是专门针对Microsoft Office 2007以后版本各种数据源开发的数据提供者.
     驱动程序名后的括号内是支持的文件类型, ACE中不同扩展名之间是逗号加一个空格; 而Jet中如果有多个扩展名, 扩展名之间则是分号加一个空格.
     Office 2007提供的是12.0版本,32位驱动; 最低支持操作系统版本是winxp sp3; 有独立安装组件.
     Office 2010开始版本为14.0; 同时提供32位和64位版本; 有独立安装组件.
     Office 2013 版本为15.0. 也存在32位和64位版本,不太清楚有无独立安装组件.
说明:
    如果安装2010或2013,除安装与自己升级后的提供程序(Provider)外,它还会自动安装12.0版本的Provider,并且位数(32或64)也相适应.其对应的ODBC驱动程序也是如此.这也是我们能在高版本中使用Microsoft Ace OLEDB.12.0的原因.(但安装2013时不会安装14.0版的Provider)

B.   SQL Server Native Client
     访问SQL Server数据库,上面已介绍.

C.    OLE DB Provider for OracleClient
      Provider=OraOLEDB.Oracle
      调用Oracle数据库的OLE DB数据提供者,由Oracle原厂提供
      驱动程序名: Oracle in Oraclientllg_home1
      升级后名字有改变,详情请查阅生产商说明手册.

           最后特别致谢赵版主的认可!!!      
(完)




TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-3 11:51 | 显示全部楼层
多此一举说点常识:
除版本而外,操作系统,提供程序或驱动程序,应用程序(如VBA,EXCEL)还有位之分;目前只有两种即32 位和64位.
在64位的操作系统中,为了向后兼容,一般把32位的提供程序或驱动程序也随同提供.
32位的应用程序可以在64位的操作系统中使用32位的提供程序或驱动程序,但不能使用64位提供程序和驱动程序.
64位的应用程序只能使用64位的提供程序和驱动程序.例如在64位的win 7中安装64位Microsoft Office应用程序(EXCEL,Access),VBA使用ADO就不能用32位的JET及驱动程序.但如果安装32位Microsoft Office应用程序,则可继续使用jet.

TA的精华主题

TA的得分主题

发表于 2015-1-3 20:25 | 显示全部楼层
占位学习                        

TA的精华主题

TA的得分主题

发表于 2015-1-3 20:29 | 显示全部楼层
很全面的知识啊,想学ADO的有福了

点评

这不是ADO入门资料,要有一定ADO基础才用得上.  发表于 2015-1-3 20:35

TA的精华主题

TA的得分主题

发表于 2015-1-17 13:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-17 15:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 07:48 , Processed in 0.052839 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表