DAO、RDO、ADO、OLEDB、ODBCandJDBCrelation1.DAO:DataAccessObject数据访问对象1993年Microsoft为了让程序员能够存取Access数据库,使用OLEAutomation技术封装了JetEngine。这些使用JetEngine存取Access数据库的OLEAutomationObject便称为DataAccessObject(DAO)。是微软的VB3.0中提供的数据访问技术,它允许访问和处理本地数据库,象access,缺点是不能访问远程数据库。因此DAO在存取Access数据库时非常有效率,但是在存取其他的数据源时却表现得不怎么好。DAO是Microsoft一种用来访问Jet引擎的方法,主要用来访问Access数据库,使用起来比较简单。于是乎微软在vb4.0中提供了RDO远程数据访问技术,它可以有效的访问象oracle&sqlserver这样的远程数据库,但也有问题就是它对本地数据库访问效果很差,所以在vb6.0中才出现了ADO,综合了前两个版本的优点,支持对关系和非关系数据库的访问,也支持访问其他的数据源,如:电子表格、email等。2.RDO(RemoteDataObjects,远程数据对象)是微软的一个应用程序接口(applicationprograminterface,API),让写Windows应用程序的程序师能够进入微软和其他的数据库供给者的数据库。然后,程序中RDO陈述使用微软的底层数据存取对象(DAO)来实际进入数据库。数据库供给者写入DAO接口。RDO已经发展到微软为新的程序推荐的程序接口---ActiveX数据对象。ADO也提供进入非关系数据库的接口而且比较容易使用。RDO(RemoteDataObjects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAOstyle组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQLServer、Oracle以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。RDO(RemoteDataObjects)处理一组对象以完成远程资料的存取,它是在ODBCAPI和驱动程序之上的一个可程序的薄层(thincodelayer),用以建立资料结果集(resultset)和光标,以及用最小的工作站资源执行复杂的程序。注意RDO只能在32位的操作系统上执行3.ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据由于OLEDB位于底层,只能由C++这样的OO语言直接实现,而不能用VB这样的高层4G语言来实现,所以微软将对OLEDB的访问封装成对象,即ActiveX数据对象(ADO),可以由vb这样的语言来调用它对OLEDB操作。ADO是一种基于COM的数据库访问技术,可以访问关系数据库与非关系数据库,由于它是基于COM的,访问速度也较快,占用资源较小。发展历程看是:dao--rdo--ado,dao主要是为单机环境准备其中的一些概念很好理解,这也是它比较容易使用的原因。RDO是专门为网络环境开发的一组对象,是基于odbc的一组接口,使用起来只能用于结构型数据库。而ADO是ACTIVEX数据对象,基于OLEDB的编程接口,而且能支持结构型数据库和非结构型数据库,而且微软将来的.NET平台的数据库也是基于OLEDB和ADO的,所以ADO有很强的适用性ADO对象总结对象说明CommandCommand对象定义了将对数据源执行的指定命令。Connection代表打开的、与数据源的连接。DataControl(RDS)将数据查询Recordset绑定到一个或多个控件上(例如,文本框、网格控件或组合框),以便在Web页上显示ADOR.Recordset数据。DataFactory(RDSServer)实现对客户端应用程序的指定数据源进行读/写数据访问的方法。DataSpace(RDS)创建客户端代理以便自定义位于中间层的业务对象。Error包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。Field代表使用普通数据类型的数据的列。Parameter代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量。Property代表由提供者定义的ADO对象的动态特性。RecordSet代表来自基本表或命令执行结果的记录的全集。任何时候,Recordset对象所指的当前记录均为集合内的单个记录。ADO事件ActiveX数据对象(ADO)是添加到MicrosoftActiveServerPages(ASP)的一套高级别接口,有利于服务器端与数据库的连接。ADO与低级别接口(OLEDB)一起使用则有利于MicrosoftUniversalDataAccess策略。ADO2.0版可生成VisualStudioAnalyzer事件。可使用这些事件跟踪分布式应用程序中的ADO交互。ADO生成的VisualStudioAnalyzer事件事件事件描述事件数据ConnectionClose指示ADO要与OLEDB数据源断开连接。无。ConnectionOpen指示ADO正在连接到OLEDB数据源。如果客户端提供,则为连接到数据源所用的连接字符串。Find指示ADO客户端已调用ADORecordset.Find函数。“查找”操作的判据;根据该判据匹配记录。GetRows指示ADO客户端已调用ADORecordset.GetRows函数。提取的行数。QueryResult指示数据库已返回响应查询的结果集。无。QuerySend指示ADO正在执行命令。该事件可由下列函数触发:Connection.ExecuteCommand.ExecuteConnection.存储过程名Recordset.Open构成查询的SQL语句。RecordsetOpen指示ADO正在打开远程服务打开记录集的源(通常为行器上的记录集。仅适用于三层方案。返回的命令文本)。Sort指示ADO准备筛选或对数据排序。排序或筛选应用于记录集数据的判据。TransactionRollback指示ADO要中止当前本地事务。返回真或假。如果为真,则保持中止,即该事务中止后紧跟着开始另一事务。如果为假,则不保持中止。TransactionCommit指示ADO正在提交OLEDB提供程序上的本地事务。返回真或假。如果为真,则保留提交,即该事务提交后紧跟着开始另一事务。如果为假,则不保留提交。TransactionStart指示ADO正在开始OLEDB提供程序上的本地事务。ADO开始事务所基于的隔离级别。隔离级别指示可看到其他事务所做更改的哪一级别。UpdateBatch指示ADO正在向提供程序发送更新批处理。仅适用于三层方案。如果有,为ADO将更新发送到的远程服务器名。4.ODBC(OpenDatabaseConnectivity,开放数据库互连)它定义了一个标准的方法来实现应用程序和数据库之间的通讯,它实际上是通过一组系统API来实现的。实际上起到了对sql语句的翻译作用,使之可以在不同的数据库上运行。ODBC是Microsoft的基于关系数据库一种互连技术,它只能访问关系数据库。全称为开放式数据库互联,它定义了一个标准的方法来实现应用程序和数据库之间的通讯,它实际上是通过一组系统API来实现的。实际上起到了对sql语句的翻译作用,使之可以在不同的数据库上运行。ODBC是Microsoft的基于关系数据库一种互连技术,它只能访问关系数据库。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。5.OLEDB(ObjectsLinkEmbedDataBase对象链接嵌入数据库)它是一种数据库结构,它可以使程序具有对存储于不同信息源的数据的一致访问。说白了就是能用select*fromtable这样的语句来访问不同类型的数据库,如access,sqlserver。OLEDB是微软“发明”的,用来淘汰ODBC的,OLEDB不光可以连接各种数据库,还可以连接exchange、活动目录、甚至操作系统文件目录等各种数据库源.层次关系:应用程序-ADO-ODBC-OLEDB-数据源或者应用程序-ADO-OLEDB-数据源6.JDBC(JavaDataBaseConnectivity,java数据库连接)它是专门针对java的一种数据库访问技术,可以实现java对不同数据源的一致性访问。全称为JavaDataBaseConnectivitystandard,它是一个面向对象的应用程序接口(API),通过它可访问各类关系数据库。我们先来看看第一种JDBC--ODBC访问的流程:JDBCDriverMannager-局部JDBC驱动-客户端数据库-数据库服务器-返回查询结果,这种访问事实上是转换JDBC调用为相应的数据库(Oracle,Sybase,Informix,DB2,和其他的数据库数据库管理系统)的客户端API调用(说简单点就好像ASP不是通过DSN对数据库访问而是通过OLEDB访问)。JDBC的最大特点是它独立于具体的关系数据库。与ODBC(OpenDatabaseConnectivity)类似,JDBCAPI中定义了一些Java类分别用来表示与数据库的连接(connections),SQL语句(SQLstatements),结果集(resultsets)以及其它的数据库对象,使得Java程序能方便地与数据库交互并处理所得的结果。使用JDBC,所有Java程序(包括Javaapplications,applets和servlet)都能通过SQL语句或存储在数据库中的过程(storedprocedures)来存取数据库。要通过JDBC来存取某一特定的数据库,必须有相应的JDBCdriver,它往往是由生产数据库的厂家提供,是连接JDBCAPI与具体数据库之间的桥梁。通常,Java程序首先使用JDBCAPI来与JDBCDriverManager交互,由JDBCDriverManager载入指定的JDBCdrivers,以后就可以通过JDBCAPI来存取数据库。JDBCdriver是用于特定数据库的一套实施了JDBC接口的类集。共有四种类型的JDBCdriver:类型1的driver称为JDBC-ODBCbridgedriver,这种类型的driver能使客户端通过JDBC调用连接到一个使用ODBCdriver的数据库。使用这类driver需要每个客户端机器都装上数据库对应的ODBCdriver,但该ODBCdriver不一定要跟Java兼容。类型2的driver将JDBC调用转换为特定的数据库调用。这类driver通常称为native-API,partlyJavadriver。与类型1的driver一样,这类driver也要求客户端的机器安装相应的二进制代码。所以这类driver不太适合于使用数据库的Applet。类型3的driver称为JDBC-NetpureJavadriver,它能将JDBC的调用转换为独立于数据库的网络协议。这种类型的driver特别适合于具有中间件(middletier)的分布式应用,但目前这类driver的产品不多。类型4的driver,又称nativeprotocol,pureJavadriver,它能将JDBC调用转换为数据库直