VB数据库访问技术编辑整理:彭武支持环境DCOM95&MDAC_TYPOverview在讨论数据库访问技术之前我先谈一下支持环境DCOM和MDAC,在一台未安装DCOM95的Microsoft(C)Windows(R)95的计算机上将不能支持MDAC_TYP。在一台未安装MDAC_TYP的Microsoft(C)Windows(R)95的计算机上将不能支持MicrosoftActiveXDataObjects(ADO)、ADOExtensionsforDDLandSecurity(ADOX)、ActiveXDataObjects(Multidimensional)(ADOMD)。Microsoft(C)InternetExplorer4.0以上版本自动包含DCOM。.DCOM95DCOM95为Microsoft(C)Windows(R)95提供了分布式COM支持。DCOM电信协议为组件对象模型(COM)组件之间可靠、安全及有效的通讯提供显著的支持。这些组件包括驻留在LAN、WAN或Internet中不同机器上的ActiveX(R)控件、脚本以及Java小程序。利用DCOM,可将应用程序发布到适当位置,从而尽可能地理解用户和应用程序。该表列出的是与DCM95同时发布文件的版本号。oleaut32.dll2.40.4273secur32.dll4.10.1999compobj.dll2.3.2ole2.dll2.3.2ole32.dll4.71.2900olecnv32.dll4.71.2900olethk32.dll4.71.2900rpcltc1.dll4.71.2900rpcltc5.dll4.71.2900rpcltccm.dll4.71.2900rpclts5.dll4.71.2900rpcltscm.dll4.71.2900rpcns4.dll4.71.2900rpcrt4.dll4.71.2900rpcss.exe4.71.2900storage.dll2.3.2stdole2.tlb2.40.4273stdole32.tlb2.1imagehlp.dll4.00dllhost.exe4.71.2900comcat.dll5.0iprop.dll4.00rpcmqcl.dll4.71.2900rpcmqsvr.dll4.71.2900olepro32.dll5.0.4273asycfilt.dll2.40.4273dcom2w98.dll2.10.35.35.MicrosoftDataAccessComponents2.5(MDAC_TYP)MDAC典型重新发行安装包含核心组件(ADO、OLEDB以及ODBC),附加OLEDB提供程序以及各种数据存储的ODBC驱动程序。详细列表MDACADO/RDSADOXADOMDJROMicrosoftDataLinkAPIOLEDBOLEDB服务组件联机分析处理(OLAP)的OLEDBODBC的OLEDB提供程序Oracle的OLEDB提供程序SQLServer的OLEDB提供程序MicrosoftJet的OLEDB提供程序OLEDB的数据形成服务打开数据库连接(ODBC)Oracle的ODBC驱动程序ODBC数据源管理器ODBCDesktop数据库驱动程序SQLServerClientDataAccessComponentsVisualFoxProODBC驱动程序.如何从PlatformSDK安装MDAC2.5SDK您可以从MSDN联机网站:完整地安装PlatformSDK,或将其安装为独立的组件。安装向导将引导您完成该过程。由于其他应用程序共享DataAccess组件,所以在安装PlatformSDK之前必须关闭所有其他应用程序。PlatformSDK安装向导允许您选择典型安装或自定义安装。典型安装下载全部SDK,而自定义安装允许您选择特定组件:文档、生成环境、调试器、工具、示例和源代码、可重新发行的组件以及其他资料。对于DataAccess组件,您可以选择安装MDACSDK的任意部分:API、文档、示例等等。如果您安装MDACSDK,我们建议您选择通过安装过程更新您的生成环境以便保持各组件同步。.MDAC2.5法律问题Jet文件再发行。以下附加要求适用于您再发行“Jet文件”(定义如下):(a)您的“应用程序”不得大幅度复制MicrosoftAccess的各项功能或(依据Microsoft的合理判断)与之竞争;并且(b)除非您的“应用程序”要求您的客户为了操作而获取MicrosoftAccess许可证,则除了仅将之用于输入MicrosoftAccess支持的各种格式的数据外,您不可以为了商业发行而与一个通用文字处理、电子制表、或数据库管理软件产品或其组件包括一个通用文字处理、电子制表、或数据库管理软件产品的集成产品或产品套包套件一起复制或使用任何“Jet文件”。说明:一个产品如果包含有限文字处理、电子制表、数据库组件并同时包含提供显著及主要价值的其它组件,如具有有限电子制表功能的会计产品,则不被视为“通用”产品。就上述规定而言,“Jet文件”指以下文件(其中一些文件包含在MDAC_typ.exe文件中):vbar332.dll,vbajet32.dll,expsrv.dll,msexch40.dll,msexcl40.dll,msjet40.dll,msjetoledb40.dll,msjter40.dll,msjtes40.dll,msltus40.dll,mspbde40.dll,msrclr40.dll,msrd2x40.dll,msrd3x40.dll,msrecr40.dll,msrepl40.dll,msrpfs40.dll,msrpjt40.dll,mstext40.dll,mswdat10.dll,mswstr10.dll,msxbde40.dll,msexcl35.dll,msjet35.dll,msjint35.dll,msjter35.dll,msltus35.dll,mspdox35.dll,msrd2x35.dll,msrepl35.dll,mstext35.dll,msxbse35.dll,msexch35.dll。DAO.DAO3.5类库文件属性例(VB5.0与Access97支持)产品版本:3.50.3602.0产品名称:Microsoft_Jet公司名:MicrosoftCorporation内部名称:DAO350语言:英语(美国)源文件名:DAO350.DLL对象类库/类库:MicrosoftDAO3.5ObjectLibrary.DAO3.51类库文件属性例(VB6.0支持)产品版本:3.51.1608.0产品名称:Microsoft_Jet公司名:MicrosoftCorporation内部名称:DAO350语言:英语(美国)源文件名:DAO350.DLL对象类库/类库:MicrosoftDAO3.51ObjectLibrary.DAO3.5允许跳过MicrosoftJet数据库引擎,用DAO对象通过RDO访问ODBC数据源。也可以把控件绑定到数据上并设置ODBCDirect属性,通过Data控件使用ODBCDirect。参见RDO关于通过ODBCDirect显露的特定特征的讨论。.DAO3.6类库文件属性例(Access2000支持)产品版本:产品名称:公司名:内部名称:语言:源文件名:对象类库/类库:.MicrosoftDAO3.6ObjectLibraryMicrosoftAccess2000包含DAO对象、方法和属性,这些对象、方法和属性将替换1.x、2.0和7.0版中的相应的内容。将需要替换旧的语言元素,它们在DAO3.6对象库中提供了这些语言元素,但MicrosoftAccess2000不支持这些语言元素。可以使用下表来识别MicrosoftDAO3.6对象库中没有包含的对象、方法和属性,以及替换它们的功能。可以使用第二栏中的新项目修改使用MicrosoftAccess旧版本中编写的代码。.使用MicrosoftAccess的ODBCDirect技术ODBCDirect的定义ODBCDirect是一种不用加载MicrosoftJet数据库引擎就可以使用ODBC数据库服务器的技术。ODBCDirect技术依赖于MicrosoftDAO3.6对象模式,所以可以方便地修改已有的DAO代码,来利用ODBCDirect技术的优点。MicrosoftDAO3.6包含一些新的对象、方法及属性以支持ODBCDirect。使用ODBCDirect访问ODBC数据的优点ODBCDirect提供以下ODBC操作的优点:ODBCDirect通过提供对ODBC数据源的直接访问,使代码执行得更快,效率更高。因为它不需要加载MicrosoftJet数据库引擎,所以在客户端只需消耗较少的资源。ODBC服务器负责处理所有查询。ODBCDirect提供改进对特定服务器的访问功能,这些功能是通过MicrosoftJet使用ODBC无法实现的。例如,对于支持临时表规范的服务器,ODBCDirect允许用户指定临时表的位置:在本地还是在服务器上。此外,也可以通过指定输入值以及检查返回值,与服务器级别的存储过程进行交互作用,这在MicrosoftJet中是不行的。ODBCDirect同时也支持异步查询。执行查询时,不必等待该查询执行完成,即可开始另一个操作。通过检查StillExecuting属性,可以跟踪查询的执行。ODBCDirect支持数据的批量更新,可以将Recordset对象更改存放于本地,然后批量向服务器提交这些更改。使用ODBCDirect,既可以创建简单的非临时表结果集,也可以创建更复杂的临时表。还可以运行返回任意数目结果集的查询。可以限制返回的行数,并监视远程数据源生成的所有消息和错误,而不影响查询的执行性能。创建ODBCDirect工作区可以通过为CreateWorkspace方法的type参数指定dbUseODBC常量,来创建一个ODBCDirect工作区。也可以通过设置DBEngine对象的DefaultType属性,来指定默认地创建一个ODBCDirect工作区。在创建ODBCDirect工作区之后,就可以使用特定的DAO对象、属性及方法来处理ODBC数据库服务器上的数据。使用MicrosoftJet访问ODBC数据的优点MicrosoftJet和ODBCDirect工作区提供的功能不同,但它们是互补的。应该使用MicrosoftJet工作区来访问.mdb文件和ISAM数据格式,例如文本和电子表格。MicrosoftJet提供了以下ODBCDirect所没有的独特功能:可更新联接。只有使用MicrosoftJet工作区才能更新基于多表联接的Recordset对象中的数据。异类联接。只有使用MicrosoftJet工作区才能执行其他数据源中的表联接。数据定义语言(DDL)的操作。只有使用MicrosoftJet工作区才能通过DAO进行DDL操作。ODBCDirect不提供TableDef对象,所以不能使用DAO来创建或修改表。不过,使用ODBCDirect可以通过执行SQLDDL语句来执行DDL操作。窗体和控件绑定。如果应用程序需要将ODBC数据源中的数据与窗体或控件绑定,就必须使用MicrosoftJet。在ODBCDirect工作区中访问的数据不能与窗体或控件绑定。如果不需要这些功能,则可以使用ODBCDirect工作区。注意:MicrosoftJet和ODBCDirect工作区都可以在应用程序中定义,并通过各种形式将它们组合起来。例如,在同一个函数中,可以定义MicrosoftJet工作区来使用DAO执行DDL操作,同时也可以定义ODBCDirect工作区来执行异步查询。ADO.ADO2.5类库文件属性例(VB6.