在敲学生管理系统之前,我们就学习过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. Hibernate介绍

    1.什么是Hibernate? 首先,Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等. 并且Hibern ...

  2. Java基础知识强化36:StringBuffer类之StringBuffer的概述

    1. StringBuffer类概述: (1)String的缺陷: 我们如果对字符串进行拼接操作,每次拼接,都会构造一个新的String对象,既耗时,又浪费空间.如下图: (2)StringBuffe ...

  3. Nginx的10万并发内核参数优化

    关于内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000timewait的数量,默认是180000.net.ipv4.ip_local_port_range = 10 ...

  4. css布局&初始化&基准样式

    学习css布局比较好的网站 学习css布局 1.css设置模块 typography(字体) colour(颜色) link(链接) forms(表单) layout(布局) navigation(导 ...

  5. jquery之onchange事件

    $(function(){ $("#opreateHtml").window("close"); $("#deliveryGrid").da ...

  6. C#、.NET和ASP.NET三者之间的区别

    刚毕业后出去找工作面试的时候就遇到这个问题!.回答不上来.回来网上查的如下: 那么 .NET.C#和ASP.NET这三者之间区别不清楚,到底它们之间有什么联系呢? 1..NET是一个平台,一个抽象的平 ...

  7. 32位PLSQL_Developer连接oracle11g_64位

    1. 请将你下载的instantclient-basic-win32-10.2.0.5 文件解压.然后复制到你的数据库安装的文件夹下的producti文件夹下,我的是: E:\app\Administ ...

  8. C#--比较

    类型比较: 在比较对象时,常常需要知道它们的类型,这样才能确定是否可以进行值的比较. 方法一. 可以将GetType()方法和typeof()运算符一起使用,就可以确定对象的类型. 例子: int i ...

  9. jQuery事件与事件对象

    事件是脚本编程的灵魂,本篇来介绍jQuery中的事件处理及事件对象. 事件与事件对象 首先,我们来看一下经常使用的添加事件的方式: <input type="button" ...

  10. SwfUpload及imgareaselect使用方法

    1.导入文件 Swfupload相关文件 imgareaselect截取插件相关文件 2.前端html代码 添加一个截取图片的按钮,其他为swf所需的html. <body> <di ...