在敲学生管理系统之前,我们就学习过ADO的有关知识。但是昨天被问到ADO的几个对象,顿时无言!为什么会出现这样的结果呢,明明是学习过了,而且也实践过(红皮书的五个例子)。这充分说明了,在以往的学习过程中,自己没有及时的进行总结,或是总结了,也只是形式上的总结而已,而没有进行进一步的思考。

首先,我们先来了解一下什么是ADO?

ADO(ActiveX Data Object),是一种基于OLEDB之上的数据库访问技术,OLEDB是一种底层的编程接口,它支持关系或非关系型数据源,比如各种类型的数据库,电子表格,电子邮件和文本文件等。

ADO对象模型主要包括七个对象,分为三个独立对象(主要对象)和四个非独立对象(辅助对象)。如下图:

从上面的图中我们可以清楚的看出,为什么ADO要分为独立对象和非独立对象,主要是由于非独立对象都需要依赖于三个独立对象。那么这几个对象之间有什么关系呢?

 1.Connection对象:负责数据库的连接工作,可以说它是操作数据库的前提,换句话说就是其他对象都必须依赖于Connection对象才能发挥其特有的功能。

Errors集合和Error对象: Errors集合包含Connection对象的所有Error对象。任何涉及到ADO对象的操作都有可能发生一个或多个提供错误。当出现提供错误时,Error对象将被放在Error集合当中。

2.Command对象:主要是负责对数据库执行命令和操作。使用Command对象还可以将查询到的结果返回到RecordSet。

Parameter集合和Parameter对象:Command对象包含一个Parameters集合,Parameters集合包含参数化的Command对象的所有参数,每个参数信息由parameter对象来表示。

 3.RecordSet对象:表示来自基本表或是命令(Command)执行结果的记录集。它可以说是ADO中最灵活,功能最强大的一个对象。利用该对象可以方便的操作数据库中的记录,完成对数据库的几乎所有操作。

Fields集合和Field对象,Fields集合代表的是RecordSet中的各个列数据库字段,RecordSet返回中的每一列在Fields集合中都有一个相关的field对象。如果说RecordSet是用来操作数据的,那么Field就是用来处理数据。

最后是Properties集合和Property对象,Properties集合是用来保存前面的Connection,Command,RecordSet以及Field对象有关的各个Property对象,每个Property对象中都存有这些对象的信息。

ADO和我们后面的ADO.NET都是一种数据库访问技术,它们之间有什么区别呢,后面我将会在我的下一篇博客中进行补充和说明。

再看ADO对象模型的更多相关文章

  1. 再看Ajax

    再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...

  2. 再看ftp上传文件

    前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...

  3. 再看 AspriseOCR - OCR应用开发 -20151124

    再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9  A~ ...

  4. Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service

    原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:&l ...

  5. 再看case语句

    再看case语句,case语句只处理单条记录,而不是set 列名的使用,可以当做数值来使用: case when 后面简直是完美的的,什么东西都是能放的,只要是一个逻辑上的true/false的逻辑就 ...

  6. android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

    android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升

  7. python基础----再看property、描述符(__get__,__set__,__delete__)

    一.再看property                                                                          一个静态属性property ...

  8. perf使用的问题,再看perf record,perf record 设置的采样频率,采样频率是如何体现在

    当perf stat -e branches 是统计 再看perf record,perf record是为了是记录时间发生的时候的调用栈, 在我的测试代码中总共有200,000,000条branch ...

  9. 再看Scrapy(1) 基本概念

    再看Scrapy(1) 基本概念 1 准备 安装scrapy: 国内镜像源(官方的pypi不稳定)安装 pip3 install -i https://pypi.douban.com/simple/ ...

随机推荐

  1. tstring

      是的,一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单.基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于 _UNICODE 的值: // abridged f ...

  2. SQL从入门到基础 - 07 抑制重复数据

    一.去掉数据重复 distinct 1. Select FDepartment from T_Employee →select distinct FDepartment from T_Employee ...

  3. vim+ctags+cscope工具

    最近在看一个开源的项目,突然发现在Linux上不知道有什么方便的工具来看开源代码.以前,在Windows上用VS2010集成开发环境,对于任意一个函数直接有快捷键跳转到函数定义处.可现在在Linux上 ...

  4. Guava API学习之Ordering犀利的比较器 编辑

    Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强.它非常容易扩展,可以轻松构造复杂的comparator,然后用在 ...

  5. php之类,对象(四)加载类及练习题

    一.加载类:1.命名类文件的时候每个单词首字母大写,后面缀上.class.php eg: Info.class.php 在写编码时定义类名首字母大写,定义变量名小写 eg:class Ren { pu ...

  6. js大文件分割上传

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  7. 使用pcs api往免费的百度网盘上传下载文件

    百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog ...

  8. ATM Solved Problem code: HS08TES

    # ATM import sys withdraw, balance = map(float, sys.stdin.readline().strip().split()) # strip()用法去除结 ...

  9. map关联容器

    #include<map> map<k, v> m; 创建一个名为 m 的空 map 对象,其键和值的类型分别为 k 和 v map<k, v>m(m2);创建 m ...

  10. QuickTime 专业版 pro 注册码

    打开QuickTime Player下拉编辑菜单--选偏好设置--注册 Name: Dawn M Fredette Key: 4UJ2-5NLF-HFFA-9JW3-X2KV 重新启动 QuickTi ...