知道.net影片后,相关数据库的一些概念连接的内侧部分是很无语。互联网是非常多的相关信息,外,基本上内容都神一样的一致。

如今。我就通过结合看到的一些资料再加上自己的理解试图去解释一下,有不正确的。还请大家不吝赐教!

看一张图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3l5MTMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

看图中右半部分。我们先来了解一下ODBC这个概念。

1.ODBC:

要了解ODBC是什么。先了解一下数据库连接的相关知识。

事实上,在最開始连接数据库时。因为数据库种类繁多,各种数据库连接有不同的需求,这个时期,数据库连接主要依靠各种API函数来进行连接。

而ODBC就是将这些API函数封装起来形成统一的接口如上图所看到的(ODBC上方有一个唯一的接口)。图中所看到的的ODBC层代表ODBC中各种数据库的驱动器(driver),当SQL语句进入接口后。驱动器管理程序通过辨别将它们分别相应的进入各自的驱动器(driver),由驱动器来讲SQL语句送入各种不同的数据库。

不知道上面这样写,有没有把这个ODBC给介绍的明确一点儿,学习要生活化。这样才easy理解。我来举个样例。

我们把ODBC假想成一辆汽车,汽车中有一名司机(driver),把以下的各种数据库如果程不同的工厂。如果司机接收到接口中的命令(SQL语句)——将汽车上的货物运到某个工厂中。

那么司机(driver)会依据命令中所指明的货物的类型,自己去辨别究竟应该进入哪个工厂才干完毕任务。

大家看,上面这个样例中接收的命令就好像是数据库中的SQL语句。那么司机就好像是驱动器(driver),而不同的工厂就好像是不同种类的数据库。这样理解,有没有简单一点儿呢?

2.OLEDB与ODBC

好了,再来看一下OLEDB,在上面的样例中我们理解了ODBC,还有我们必须知道,ODBC负责的仅仅是结构化数据库的连接。

这样我们就会比較easy理解OLEDB。

OLEDB事实上和ODBC类似,都是负责数据库连接的低级接口。而OLEDB不仅支持结构化数据库如SQL server,Oracel Access等,并且还支持非结构化数据源的连接如EXCEL等。

OLEDB(对象连接和嵌入数据库),是一组对象的集合。一种读写数据的方法。在使用OLEDB时,使用步骤为:初始化OLE、连接到数据源、发出命令、处理结果、释放数据源对象并停止初始化OLE。

他能够通过ODBC连接到数据库。也能够之间连接到数据库。当不通过ODBC时,这时在这当中并不涉及到驱动器的成分,因此,此时的数据库连接速度会更快。同一时候,我们能够知道,仅仅要支持ODBC的数据源是一定能够支持OLEDB的。

可是反过来则不一定。

3.ADO

通过图中。我们看到ADO是位于应用程序和OLEDB之间的。它属于数据库连接中的高层接口。

是一个用于存取数据源的COM组件。

它提供了编程语言和统一数据訪问方式OLE DB的一个中间层。同意开发者编写訪问数据的代码而不用关心数据库是怎样实现的,而仅仅用关心到数据库的连接。

訪问数据库的时候,关于SQL的知识不是必要的,可是特定数据库支持的SQL命令仍能够通过ADO中的命令对象来运行。

怎样理解上面这个概念呢?事实上我们能够联系我们学到的关于ADO控件的相关知识。在原来学习VB的时候,我们假设想要连接到数据库的话,必须载入一个引用空间。里面含有connection,command,recordset等一些相关数据库连接的对象,事实上这个引用就是ADO。我们通过这些对象建立对数据库的连接,我们仅仅需编写訪问数据库的代码。而并不用关系数据库是怎样实现的。

以上是我结合上图和学过的知识对这三个概念的理解。非常多不透彻的地方。请大家共同交流。



版权声明:本文博客原创文章。博客,未经同意,不得转载。

ODBC、OLEDB和ADO关系的更多相关文章

  1. ODBC、OLEDB、ADO、SQL的关系

    对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清SQL.ADO.OLE DB.ODBC,大脑中一片混乱,好像懂了,又好像没懂,非常的苦恼,今天下了点功夫研究了一下,贴出来,其中肯定有好多错误,希望 ...

  2. 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史

    原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...

  3. [转帖]ODBC、OLEDB、ADO、ADO.NET

    一文详解ODBC.OLEDB.ADO.ADO.NET之间的关系 2019年01月16日 21:28:38 LoveMIss-Y 阅读数:66更多 所属专栏: 白话C#高级编程   版权声明:本文为博主 ...

  4. ODBC, OLEDB, ADO, ADO.Net的演化简史

    ODBC, OLEDB, ADO, ADO.Net的演化简史 Copy&Paste了一下午,终于一蹴而就此文,嘿嘿... 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->O ...

  5. ODBC, OLEDB, ADO, ADO.NET

    在SSIS中,选择Connction Manager时,有很多的类型.其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET.这4个东东到底是什么,他们有什么关联,什么区别,如何 ...

  6. 数据库访问接口(ODBC,OLEDB,ADO)

    数据库访问接口发展历史 ODBC历史 ODBC(Open Database Connectivity,开放数据库互连).要了解ODBC是什么,先了解一下数据库连接的相关知识.在最开始连接数据库时,由于 ...

  7. SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别[转]

    一.ODBC   ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂 ...

  8. (4.3)ODBC/OLE DB/ADO概念与使用情况

    一.ODBC   ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂 ...

  9. SSIS使用OleDB和Ado.Net两种方式调用 存储过程

    在使用”执行 SQL 任务“组件调用存储过程时,连接方式使用OleDB和Ado.Net稍有不同,结合图例说明一下 当我们使用OleDB时,设置的截图如下: 参数使用?来代替,Parameter Nam ...

随机推荐

  1. Java 开源博客——B3log Solo 0.6.7 正式版发布了!

    Java 开源博客 -- B3log Solo 0.6.7 正式版发布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也非常欢迎大家参与进来 :-) 特性 基于标签的文章分类 ...

  2. javascript运算符应用

    下面的代码会输出什么?为什么? console.log(1 + "2" + "2"); console.log(1 + +"2" + &qu ...

  3. <p><span style="font-size:14px">近期须要批量将PNM&#26684;式的文件转换成GIF文件。我尝试了例如以下的图像转换工具:</span></p>

    近期须要批量将PNM格式的文件转换成GIF文件.我尝试了例如以下的图像转换工具: ImageBatch:全然免费,但只支持PNG JPEG BMP GIF四种格式 OfficeConverter:在线 ...

  4. Java NIO学习笔记之基本概念

    一.缓冲区操作 缓冲区,以及缓冲区如何工作,是所有 I/O 的基础.所谓"输入/输出"讲的无非就是把数据移进或移出缓冲区. 进程使用 read( )系统调用,要求其缓冲区被填满.内 ...

  5. 枚举系统磁盘驱动器(使用GetLogicalDriveStrings API函数,system("pause"); 很实用,还用到wcslen等函数)

    代码如下: #include "stdafx.h" #include <vector> #include <string> #include <Win ...

  6. Android JobService的使用及源码分析

    Google在Android 5.0中引入JobScheduler来执行一些需要满足特定条件但不紧急的后台任务,APP利用JobScheduler来执行这些特殊的后台任务时来减少电量的消耗.本文首先介 ...

  7. source insight totalcmd 中文目录

    @echo off for /F "usebackq delims=" %%a in (`echo %1^^^|iconv -f utf-8 -t gb18030`) do ( s ...

  8. LeetCode -- 删除链表中值为k的元素

    本题目比較直接,一次遍历遇到匹配的元素直接删除(通过n.next = n.next.next)就能够了,仅仅是须要考虑到:1.首节点的情况2.末节点的情况 下面为实现: public ListNode ...

  9. js如何实现动态在表格中添加标题和去掉标题?

    js如何实现动态在表格中添加标题和去掉标题? 一.总结 1.通过table标签的createCaption(),deleteCaption()方法实现. document.getElementById ...

  10. 定义变量let,const

    1.块级作用域let 声明变量,作用域是最近的"{}": 'use strict'; { let test = '1'; } console.log(test);//test is ...