ADO,ADO.NET,OLEDB,ODBC连接数据库的区别
一. ADOADO (ActiveX Data Objects) 是一個用於存取數據源的COM組件。它提供了程式語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心資料庫是如何實現的,而只用關心到資料庫的連接。訪問資料庫的時候,關於SQL的知識不是必 要的,但是特定資料庫支持的SQL命令仍可以通過ADO中的命令對象來執行。 架構ADO被設計來繼承微軟早期的數據訪問對象層,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被發布。 ADO包含一些頂層的對象:
ADO組件的使用需要利用支持COM的高級語言,例如ASP中的VBScript或者Visual Basic. 基本功能使用 ADO 存取資料的一些基本步驟:
範例
Code
Private Function exist(pTile As String) As BooleanDim strsql As Stringstrsql = "select 1 from G_SRP_INFO where tile='" & pTile & "'"Dim intRSOpenType As IntegerIf madoCN Is Nothing ThenExit FunctionEnd IfDim adoRS As ADODB.RecordsetSet adoRS = New ADODB.Recordset intRSOpenType = adOpenStaticadoRS.CursorLocation = adUseClient adoRS.Open strsql, madoCN, intRSOpenType, adLockOptimisticIf CStr(adoRS(0)) = "1" Thenexist = TrueElseexist = FalseEnd IfEnd Function 二. ADO.NETADO.NET是微軟在.NET Framework中負責資料存取的類別庫集,它是使用在COM時代奠基的OLE DB技術以及.NET Framework的類別庫和程式語言來發展的,它可以讓.NET上的任何程式語言能夠連接並存取關聯式資料庫與非資料庫型資料來源(例如 XML,Excel或是文字檔資料),或是獨立出來作為處理應用程式資料的類別物件,其在.NET Framework中的地位是舉足輕重,許多人將ADO.NET視為ADO的下一個版本,但其實它是一個全新的架構、產品與概念。 架構ADO.NET對象模型(object model)有五個主要的對象,分別是Connection對象,Command對象,DataAdpter對象,Dataset對象以及 DataReader對象.這些對象中負責建立連線和數據操作的部分我們稱為‘數據操作對象’(Managed Provider),分別由Connection對象,Command對象,DataAdpter對象以及DataReader對象所組成。數據操作對象 最主要是當作Dataset對象以及數據源之間的橋梁,負責將數據源中的數據取出後存入Dataset對象中管理,以及將數據存回數據源的工作。
各部件之间的关系如图下图所示: ADO.NET和ADO的差異 對於 ADO 的開發人員來說,最明顯的變化在於以往 ADO 中的 Recordset 消失了,並且明確的分開為連線型的 DataReader 以及離線型的 DataSet 與 DataTable,並且發展支援離線型資料來源的瀏覽工具 DataView, 這樣的改變,讓習慣使用 ADO 的 VB/ASP 開發人員會有某種程度的不習慣,同時讓 ADO.NET 的學習會較 ADO 有較些許的複雜性,因此有部分新入門或是VB 6.0/ASP開發人員會在學習.NET Framework或是使用VB.NET開發應用程式時,在 .NET Framework 中使用 ADO 來連接資料來源。但在 .NET Framework 應用程式使用 ADO 的話,.NET Framework會因為要多一層COM和.NET資料之間的轉換,會讓應用程式效能有少部分的損耗。 三. OLD-DB是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。 作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。OLD DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列: 初始化OLE 连接到数据源、发出命令、处理结果、释放数据源对象并停止初始化OLE Object Linking and Embedding,对象连接与嵌入,简称OLE技术。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为部件对象模型。 OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM)。 DB(英文全称data base,数据库)是依照某种数据模型组织起来并存放二级存储器中的数据集合。 OLE DB 将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称:
OLE DB 与ODBC 的关系由于OLE DB 和ODBC 标准都是为了提供统一的访问数据接口,所以曾经有人疑惑:OLE DB 是不是替代ODBC 的新标准?答案是否定的。实际上,ODBC 标准的对象是基于SQL 的数据源(SQL-Based Data Source),而OLE DB 的对象则是范围更为广泛的任何数据存储。从这个意义上说,符 合ODBC 标准的数据源是符合OLE DB 标准的数据存储的子集。符合ODBC 标准的数据源要符合OLE DB 标准,还必须提供相应的OLE DB 服务程序(Service Provider),就像SQL Server 要符合ODBC 标准,必须提供SQL Server ODBC 驱动程序一样。现在,微软自己已经为所有的ODBC 数据源提供了一个统一的OLE DB 服务程序,叫做ODBC OLE DB Provider。 ODBC OLE DB Provider 发布之后,有人又担心:ODBC Provider 是不是在ODBC 之上的新的层次(Layer)?如果是,那么使用OLE DB 访问ODBC 数据源是否将影响性能?答案也是否定的。实际上,ODBC Provider 的作用,是替换ODBC Driver Manager,作为应用程序与ODBC 驱动程序之间的桥梁,理论上不会增加任何开销。 四、 ODBCODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS(Database Management System)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的 设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。微软公司在1993年以DLL集的方 式发布了世界上第一个ODBC产品,现在成为了微软开放服务结构(WOSA,Windows Open Services Architecture)中,有关数据库的一个组成部分。微软的ODBC产品其实就是一个ODBC的驱动管理器,提供一个ODBC应用程序到某种 ODBC驱动的接口。在UNIX系统上,有两个开源的ODBC驱动管理器,unixODBC和iODBC。 ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就 是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 一个完整的ODBC由下列几个部件组成:
应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。 在访问ODBC数据源时需要ODBC驱动程序的支持。用Visual C++ 5.0安装程序可以安装SQL Server、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle 和Microsoft Text等驱动程序.在缺省情况下,VC5.0只会安装SQL Server、 Access、 FoxPro和dBase的驱动程序.如果用户需要安装别的驱动程序,则需要重新运行VC 5.0的安装程序并选择所需的驱动程序。 五,各部件之间的关系如图下图所示: |
转载于:https://www.cnblogs.com/colder/archive/2010/03/05/1679143.html
ADO,ADO.NET,OLEDB,ODBC连接数据库的区别相关推荐
- ADO,OLEDB,ODBC,DAO的区别
ADO NET OLEDB ODBC连接数据库的区别 http://www.doc88.com/p-976312043296.html http://blog.csdn.net/ithomer/art ...
- ADO, OLEDB, ODBC, DAO的区别
ADO, OLEDB, ODBC, DAO的区别 ADO, OLEDB, ODBC, DAO的区别 ODBC(Open Database Connectivity,开放数据库互连) DAO(Data ...
- SQLServer中ADO,OLEDB,ODBC的区别
之前看过王志鹏一片博客<sql server 数据库连接方式分析.详解>一直以为连接数据库只有OLEDB和ODBC两种方式,因为自己可以肯定这次连接数据库使用的不是OLEDB方式.所以自己 ...
- java ado连接mysql_【转】Java JDBC对应C# ADO连接数据库之区别
JDBC对应C#连接数据库之区别 之前一直在用java,最近因为找了.NET的工作,开始学习.NET. 今天也是查了好多资料,但是一直没有看到和JDBC之间的对比博文,开始也是一头雾水! 但是功夫不负 ...
- ADO、DAO、ODBC、RAO和OLE DB等概念及异同
一:概念介绍 1.ADO ADO 并不是自动和您现存的数据访问应用程序代码兼容的.当 ADO 封装 DAO 和 RDO 的功能性的时候,您必须将许多语言要素转换为 ADO 语法.在某些情况下,这将意味 ...
- ADO.NET数据库操作------SqlDataReader和SqlDataAdapter 区别
ADO.NET数据库操作------SqlDataReader和SqlDataAdapter 区别 1. SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活. ...
- ADO/ADO.NET
引用一.ADO 与ADO.NET两种数据访问方式区别? 1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于 ...
- JDBC和ODBC之间的区别
转载自:JDBC和ODBC之间的区别 作者:青灯夜游 本文原创发布php中文网 补充:ODBC&JDBC简介 JDBC和ODBC都是API(应用程序编程接口),它帮助客户端的应用程序访问服务器 ...
- .NET中的OleDb,Odbc的Parameters
OleDb,Odbc使用Parameters,SQL语句中参数使用"?",在Parameters.Add()时,添加的参数是与SQL中的问号一一对应的,而并不在乎 两个参数名是否一 ...
最新文章
- Unicode和UTF-8的关系
- Flask入门之Jinjia模板的一些语法
- 剑指offer 算法 (发散思维能力)
- Android Studio failed to resolve .....
- ##连接符和#符的使用
- python 对比文件内容差异_使用Python来比较文件夹并提取差异部分
- Java 算法 旅行家的预算
- deepin V20.2版本安装MySQL
- 抖音·某无关痛痒的信息泄露接口
- 蘑菇战争2显示没有连接服务器,蘑菇战争2新手怎么玩?四步带你解决新手难关[多图]...
- 在VMware虚拟机上安装 Win7 操作系统
- html img素材,html使用img标签和背景图片之间的区别
- [ECE]模拟试题-4
- Android URL scheme跳转失败(源码实现排查思路知识拓展)
- RTOS内功修炼记(二)—— 优先级抢占调度到底是怎么回事?
- SAP凭证的类别和记账码
- 利用plant simulation模拟交通信号灯控制小车通行
- 图的深度优先遍历实现农夫过河
- 程序员为何痴迷深夜写代码?
- python安装bert模型_BERT模型的简单使用(Python)