对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清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

最新文章

  1. 【前端安全】JavaScript防http劫持与XSS
  2. iOS之隐藏键盘的方式
  3. 【转】一名大学生的PHP进阶之路
  4. 【转】JavaScript中,{}+{}等于多少?
  5. 跟开涛老师学shiro -- shiro简介
  6. What is Split Brain in Oracle Clusterware and Real Application Cluster (文档 ID 1425586.1)
  7. Spring Mvc 返回机制
  8. 基于jQuery很牛X的批量上传插件
  9. Linux命令学习笔记(1)
  10. [MySQL]快速解决"is marked as crashed and should be repaired"故障
  11. HtmlParser 2.0 中文乱码问题
  12. The 2014 ACMICPC Asia Regional Guangzhou Online
  13. python 模块的概念介绍
  14. Android 插件化技术窥探
  15. tcp、udp、ip、icmp报文格式分析
  16. SLAM for dummies中文翻译
  17. 阿里云CentOS 7无外网IP的ECS访问外网(配置网关服务器)
  18. 2、AngularJs 过滤器($filter)
  19. Yii2 Gridview查询关联筛选
  20. JConsole 配置

热门文章

  1. Sql Server 日期时间格式转换
  2. Linux集群的NTP服务器时间同步
  3. Springer Latex
  4. css文本(教程)
  5. selenium学习笔记(webdriver下载配置)
  6. MVVM3
  7. PinYin4JUtils
  8. wireshark捕获到的TCP包图示
  9. 蓝牙(cc2540) 协议栈 学习一
  10. notepad++去空格空行技巧