在敲学生管理系统之前,我们就学习过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. VMware Virtual Machine安装报错解决1

    安装完VMware virtual machine 后,再进行 "create a new virtual machine"最后点击"Finish"时,报如下错 ...

  2. 封装curl类,post get方法实现网站请求

    <?phpclass RamDemo{    //get方法    function RamGet($url,$arr)    {        if($arr!=''){           ...

  3. Java初转型-Maven入门

    原系列名:Maven学习总结(一) 原博文出自于:http://www.cnblogs.com/xdp-gacl/p/3498271.html 感谢! 一.Maven的基本概念 Maven(翻译为&q ...

  4. C#。4.1数组的应用

    数组的应用 (一).冒泡排序.1.冒泡排序是用双层循环解决.外层循环的是趟数,里层循环的是次数.2.趟数=n-1:次数=n-趟数.3.里层循环使用if比较相临的两个数的大小,进行数值交换. 代码 in ...

  5. asp.net web编程开发将model键值对化

    关键字:model属性,反射 正文         model是数据库的映射,在.net web开发中,作为程序的最底层.web开发的一切都是基于数据库的,分了层之后,就基于model了. 为什么要将 ...

  6. Xcode简易基础篇,以新手角度去操作

    声明:此Newlife XCode非Mac的XCode,避免误会. 日常用的Newlife X组件的相关资源,不限于XCode,只是以XCode组件为主: 1.QQ群:1600800 2.博客 : h ...

  7. Swift--控制流与oc不同的地方

    1.For-in循环中... for index in 1...5 { print("\(index) times 5 is \(index * 5)") } for _ in 1 ...

  8. angular请求传递不了数据

    var data={ 'id':ztreeParent.id } $http({ url:'/rcCategoryControler/deleteRcCategoryById', method:'GE ...

  9. POJ2739 Sum of Consecutive Prime Numbers(尺取法)

    POJ2739 Sum of Consecutive Prime Numbers 题目大意:给出一个整数,如果有一段连续的素数之和等于该数,即满足要求,求出这种连续的素数的个数 水题:艾氏筛法打表+尺 ...

  10. 转自http://blog.slogra.com/post-13.html,关闭centos虚拟机的蜂鸣声

    相信对经常在虚拟机做实验的人来说,每次按tab来补全命令的时候是最痛苦的,这个时候是最让人想把 电脑的蜂鸣器给拆下来,让我们来关闭这个烦人的东西吧.  在centos系统下的方法 1.临时解决办法:以 ...