ODBC、OLEDB、ADO、SQL的关系
对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清SQL、ADO、OLE DB、ODBC,大脑中一片混乱,好像懂了,又好像没懂,非常的苦恼,今天下了点功夫研究了一下,贴出来,其中肯定有好多错误,希望大鸟们拍砖,为了我也是为了他人。
先贴一张图片,咱看图说话:
先说ADO、ODBC、OLE DB这三者的关系:
ADO的概念:ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
ODBC的概念:ODBC:开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术,开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。
OLE DB的概念:OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。
个人鄙见:从上面我标出来的红色字体不难看出,ODBC和OLE DB都是应用程序接口,都是为了应用程序访问数据库定制的一组标准,而ODBC是曾经的数据库通信标准,而OLE DB是在一切对象化的趋势下,微软打算用它取代ODBC,OLEDB分两种:直接的OLEDB和面向ODBC的OLEDB,后者架构在ODBC上,这样没有自己的OLEDB提供者的数据库也可以使用OLEDB的特点了。OLEDB的效率要高于ODBC,而且OLEDB要包含ODBC。
至于ADO:是一个应用程序层次的界面,它用oledb来与数据库通信 ,是应用程序和OLEDB中间的一层。为什么要添加这一层呢,开发人员直接使用OLEDB去和数据库通信不就可以了吗,因为OLEDB相对来说底层一些,直接操作它的难度也就大一些,所以微软为了开发人员的简洁性就推出了ADO,我觉得这里还和降低耦合有点关系。
再说SQL和ADO的关系:
SQL的概念:SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
ADO的概念:如上,不再赘述。
个人鄙见:SQL它是一个标准的数据库查询语言,用于操纵数据库;而ADO则是数据联接方式,就是通过什么方式或者说通过什么数据库组件来让你联接到数据库; 换句话说,ADO是让你联接到数据库(建立通路),而SQL是在这个通路的基础上进行对数据的操作,SQL定义了如何对数据库进行操作(增减改查),ADO为这个操作提供了可能(Execute方法)。其实ODBC本身也提供了对SQL语言的支持,用户也可以直接将SQL语句送给ODBC。
addnew与insert into的区别:
AddNew方法是ADO中RecordSet对象的一个方法,Insert Into是SQL的一个语句(也是需要通过ADO对象完成的)。ADO 的 AddNew 方法是将 Insert Into 语句封装了起来,所以,当对大量数据进行操作时,直接使用 SQL 语句将会大大加快存取数据的速度,因为它减少了 ADO 的“翻译”时间。
ADO中Command对象和Connection对象的Execute方法的区别:
connection对象相对command对象的功能要强大,所以实际编程中很少用command对象.
区别:connection对象执行SQL语句后的结果是可以自由移动的结果集,command对象执行SQL语句的结果是只读,逐行向下读取的结果集.
至于什么时候用conn与cmd,要看情况而言,程序比较简单的时候用哪个都行,复杂时一般用conn
ODBC、OLEDB、ADO、SQL的关系的更多相关文章
- 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史
原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...
- ODBC, OLEDB, ADO, ADO.Net的演化简史
ODBC, OLEDB, ADO, ADO.Net的演化简史 Copy&Paste了一下午,终于一蹴而就此文,嘿嘿... 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->O ...
- ODBC, OLEDB, ADO, ADO.NET
在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何 ...
- SSIS 使用OLEDB/ADO NET Source 数据流source控件 连接Oracle失败
在做数据提取的时候发现一个非常奇怪的问题. Oracle客户端是安装正确并且Toad可以正常运行的,但是在新建OLEDB/ADO NET Source 数据流source控件连接Oracle的时候一直 ...
- ODBC OLEDB
ODBC OLEDB https://www.cnblogs.com/dachuang/p/8615754.html
- 以初学者的角度理解:SQL实现关系除法
以初学者的角度理解:SQL实现关系除法 相信各位在学习SQL的时候,由于没有一家SQL语言提供除法命令而只能自己写一个.而网上大多就是四步骤加一个模板: select distinct A.X fro ...
- ODBC、OLEDB和ADO之间的关系 ,以及性能比较
学习了.net视频之后,对里面涉及到的数据库连接部分中的一些概念表示很无语.网上很多相关资料,但除了网站不一样外,基本上内容都神一样的一致. 现在,我就通过结合看到的一些资料再加上自己的理解试图去解释 ...
- ODBC,OLEDB,ADO,ADO.net,JDBC 理解
一 .ODBC 开放式数据库互联(Open Database connectivity), 93年微软推出的实现应用程序 和关系数据库直接 通讯的借口标准.只能用于关系数据库 . 注意事项 : 必须先 ...
- ODBC与ADO 连SQL Server 2005
ADO是microsoft数据库应用程序开发的连连接口,是建立在OLE DB之上的高层 ADO使用方法步骤: 1.初始化COM库,引入ADO库定义 2.用connection对象连接数据库 3.利用连 ...
随机推荐
- js 执行跨域刷新页面
主要代码: 注意这段代码 是子页面中添加的也就是弹出的那个页面刷新父页面 <script type="text/javascript"> function shuaxi ...
- AIDL与Binder的区别
Binder是一个远程对象的基础类,核心部分是远程调用机制,这部分是由IBinder定义的. 它是对IBinder类的实现,其中IBinder类提供了这样一个类的标准的本地化实现方式. 大多数开发者不 ...
- JNIjw06
1.VC6(CPP)的DLL代码: #include<stdio.h> #include "jniZ_JNIjw06.h" // 全局变量 jfieldID g_pro ...
- VFIO简介
VFIO是一套用户态驱动框架,它提供两种基本服务: 向用户态提供访问硬件设备的接口 向用户态提供配置IOMMU的接口 VFIO由平台无关的接口层与平台相关的实现层组成.接口层将服务抽象为IOCTL命令 ...
- JavaScript面向对象之Prototypes和继承
本文翻译自微软的牛人Scott Allen Prototypes and Inheritance in JavaScript ,本文对到底什么是Prototype和为什么通过Prototype能实现继 ...
- phalcon: 独立的映射,字段名名别名
class ProductsController extends \Phalcon\Mvc\Controller { public function saveAction() { //Obtain t ...
- c#实现验证某个IP地址是否能ping通
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...
- VS2015自带v120的Platform Toolset
在VS2015安装组件时,勾选 “Windows 8.1 和 Windows Phone 8.0/8.1”下面的“工具和 Windows SDK”,将会安装Visual Studio 2013 (v1 ...
- uva-1449-AC自动机
题目链接https://vjudge.net/problem/UVA-1449 题目大意:给出N(N<150)个长度不超过L(70)的匹配串和一个长度小于1e6的文本串,在文本串中找出出现次数最 ...
- 牛客比赛-状压dp
链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意 ...