ADODataSet组件
  此组件功能是非常强大的,通过ADODataset,可以直接与一个表进行联接,也可以执行SQL语句,还可以执行存储过程,可以说集ADOTable、 ADOQuery、   ADOStoreProc三者的功能于一身。在使用时,首先设定其Connection属性为ADOConnection组件,没有 ADOConnection组件就直接设定ConnectionString属性。接下来有两个重要属性CommandType与 CommandText,这两个属性相互关联的。CommandType决定采用何种方式如存储过程、数据表还是其他等等,一旦设定了 CommandType,CommandText属性就可以相应设定了。比如设定CommandType为cmdTable,那么CommandText 就会列出所有的数据表供选择,如果选择CommandType为cmdStoredProc,则CommandText将会列出所有的存储过程供选择,如 果选择CommandType为cmdText,那么单击CommandText属性后的省略号将会打开“CommandText   Editor”,在这里其实就是让用户编写SQL语句的,此窗体提供了数据表列表及数据表中字段列表,给用户提供了方便,使得编写SQL语句更容易。如果 你对写SQL语句比较熟悉的话根本无需其帮助,还不如自己手写的快。设定完这些属性最后设定其Active属性为True即可,如果有参数请在属性中设定 一下。此组件和DataSource相连后就可DbGrid等组件中显示。

ADOCommand组件   
   此组件有CommandType与CommandText两个重要属性,属性的设定方法和上面的ADODataSet组件相同。不过此组件不是数据集组 件,所以无法和DataSource组件相连,设定属性好之后可以用其ExecSQL方法执行。此组件有什么用途呢?因为ADO本身有Command对 象,所以估计Delphi为了把这种对象对应于VCL才引入的ADOCommand,它只是提供了另外一种操作方式而已,它主要用于数据定义操作,所以此 组件并不常用,而且大部分功能都可以通过别的组件进行,一般用途并不太大。

----

ADO存取技術元件幾乎是采用一對一的方式來封裝原生的ADO物件﹐TADODataSet元件了ADO的RecordSet物件﹐并且提供了和 Delphi的資料感知元件連結的能力﹐TADODataSet元件的CommandType特性代表了TADODataSet封裝的RecordSet 物件會執行什么形態的命令﹐我們可以把TADOTable元件看作是封裝設定CommandType為cmdTable的RecordSet物件﹐把 TADOStoredProc元件看作是封裝設定CommandType為cmdStoredProc的RecordSet物件﹐但對于 ADOCommand﹑ADOQuery元件來講還是有一些些區別﹒

可以把TADOQuery元件看作是封裝設定CommandType為cmdText的RecordSet物件﹐但若使用TADODataSet元件﹐其 所使用的SQL敘述必須是有回傳資料的語法(如Select等)﹐其不支援無回傳資料的語法(如Insert, Delete, Update等)﹐而TADOQuery元件無此限制﹐可使用有回傳資料和無回傳資料的語法﹒

而TADOCommand元件也是使用SQL語言的元件﹐但其和TADODataSet元件的不同之處在于其只能使用于資料定義語言(Data Definition Language)和無回傳資料的SQL語法﹐其作用在于TADOCommand元件使用的資源較少﹐如果ADO應用程式中有經常需要執行不回傳資料的 SQL敘述時﹐使用TADOCommand元件可得到較好的效率﹒另外需要說明的一點是在TADOCommand元件中使用有回傳資料的SQL語法并不是 不可以﹐只是必須再搭配一個ADO的資料集元件才可以接受由TADOCommand回傳的結果資料﹐所以不如直接使用ADOQuery或 ADODataSet來得節省資源﹒

ADODataSet与ADOQuery的区别的更多相关文章

  1. Delphi中使用ADO连接Excel

    第一部分: . 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Ac ...

  2. Delphi数据库处理

    Delphi数据库处理 第一节 BDE.ADO.InterBase和dbExpress Delphi中处理数据库主要有两种方法,也就是BDE.ADO,从Delphi 6.0开始还加入了一种dbExpr ...

  3. adoquery.refresh和adoquery.query的区别

    大的区别没有 1: requery是通过重新发出原始命令并再次检索数据,可使用 Requery 方法刷新来自数据源的 Recordset 对象的全部内容.调用该方法等于相继调用 Close 和 Ope ...

  4. 序列化ADODataSet, ADOQuery

    经过昨天晚上一折腾把做了一个DIOCP直接传递TADOQuery的Demo,在google上找了一系列的资料. 这样服务端可以直接将TADOQuery查询出来的数据直接转换成TStream自己进行传递 ...

  5. Requery,Refresh,Adoquery.Close,Open 区别

    经过测试发现: Requery 相当于 Adq.Close,Open:并且比Close,Open方法有个优点就是不丢失排序,Sort Adq.Close,Open 后,原来的 Adq.Sort 会丢失 ...

  6. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

  7. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

随机推荐

  1. ubuntu apt-get 出现NO_PUBKEY的解决方案

    https://blog.csdn.net/u014221090/article/details/77524682

  2. Mac中安装JDK1.8和JDK11双版本并任意切换

    首先区官网下载JDK8和JDK11安装包,安装后打开bash $ cd /Library/Java/JavaVirtualMachines $ ls -al 可以看到两个版本安装成功 然后编辑环境变量 ...

  3. PAT A1150 Travelling Salesman Problem (25 分)——图的遍历

    The "travelling salesman problem" asks the following question: "Given a list of citie ...

  4. java 迭代器遍历List Set Map

    Iterator接口: 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象 Iterator对象称作为迭代器,用以方便的对容器内元素的遍历 ...

  5. 如何屏蔽SkylineGlobe提供的三维地图控件上的快捷键

    SkyllineGlobe提供的 <OBJECT ID=" TerraExplorer3DWindow" CLASSID="CLSID:3a4f9192-65a8- ...

  6. keystone系列五:keystone源码分析

    六 keystone架构 6.1 Keystone API Keystone API与Openstack其他服务的API类似,也是基于ReSTFul HTTP实现的. Keystone API划分为A ...

  7. [04] Bean的实例化和多个配置文件

    之前我们已经提到过,Spring的核心能力之一就是IOC机制,从上章的示例中我们也可以看到,Spring中的ApplicationContext充当了一个实例化对象的容器的角色,并管理着它们的生命周期 ...

  8. JavaScript 利用 async await 实现 sleep 效果

    const sleep = (timeountMS) => new Promise((resolve) => { setTimeout(resolve, timeountMS); }); ...

  9. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(七)一次线上Mysql数据库崩溃事故的记录

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 文章简介 工作这几年,技术栈在不断更新,项目管理心得也增加了不少,写 ...

  10. 分布式监控系统Zabbix-批量添加聚合图形

    之前部署了Zabbix(3.4.4版本)监控环境,由于主机比较多,分的主机组也比较多,添加聚合图形比较麻烦,故采用python脚本进行批量添加聚合图形.脚本下载地址:https://pan.baidu ...