1. {
  2. 将数据集操作方面的东西全部封装成一个单独的类
  3. TcustomAdoDataSet是TadoQuery、TadoTable、TadoDataSet、TadoCommand的公共祖先类
  4. 应尽量使用TadoDataSet和TadoCommand类
  5. }
  6. unit untOpeDataSet;
  7. interface
  8. uses
  9. SysUtils,
  10. db, adodb, commonFunction, msg;
  11. type
  12. TopeDataSet = class
  13. public
  14. {修改已发生,但还没有得到应用的记录,在关闭窗口前应给予提示}
  15. function adoUpdatesPending(adoDataSet: TCustomAdoDataSet): boolean;
  16. {增加}
  17. procedure Append(adq: TadoQuery);
  18. {保存}
  19. procedure Save(adq: TadoQuery);
  20. {删除}
  21. procedure delete(adq: TadoQuery);
  22. {刷新数据集}
  23. procedure flash(adq: TadoQuery);
  24. {事务提交}
  25. procedure adqCommit(adq: TadoQuery);
  26. {查询数据集}
  27. procedure adqQuery(adq: TadoQuery; s: string);
  28. {带参查询数据集}
  29. procedure adqQueryPara(adq: TadoQuery; s: string; s1: variant);
  30. procedure adqQueryPara2(adq: TadoQuery; s: string; s1: variant; s2: variant);
  31. procedure adqQueryPara3(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant);
  32. procedure adqQueryPara4(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant);
  33. {更新数据集}
  34. procedure adqExec(adq: TadoQuery; s: string);
  35. {带参更新数据集}
  36. procedure adqExecPara(adq: TadoQuery; s: string; s1: variant);
  37. procedure adqExecPara2(adq: TadoQuery; s: string; s1: variant; s2: variant);
  38. procedure adqExecPara3(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant);
  39. procedure adqExecPara5(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant; s5: variant);
  40. procedure adqExecPara6(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant; s5: variant; s6: variant);
  41. end;
  42. implementation
  43. { TopeDataSet }
  44. function TopeDataSet.adoUpdatesPending(
  45. adoDataSet: TCustomAdoDataSet): boolean;
  46. var
  47. clone: TadoDataSet;
  48. begin
  49. clone := TadoDataSet.create(nil);
  50. try
  51. clone.clone(adoDataSet);               //复制
  52. clone.filterGroup := fgPendingRecords; //已得到修改但还没有得到应用的所有记录
  53. clone.filtered := true;
  54. result := not(clone.bof and clone.eof);
  55. clone.close;
  56. finally
  57. clone.free;
  58. end;
  59. end;
  60. procedure TopeDataSet.adqCommit(adq: TadoQuery);
  61. begin
  62. try
  63. adq.Connection.CommitTrans;
  64. info(SopeSuccess, Scorp);
  65. except
  66. adq.Connection.RollbackTrans;
  67. info(SopeFail, Scorp, 16);
  68. end;
  69. end;
  70. procedure TopeDataSet.adqExec(adq: TadoQuery; s: string);
  71. begin
  72. adq.Close;
  73. adq.SQL.Clear;
  74. adq.SQL.Text := s;
  75. adq.ExecSQL;
  76. end;
  77. procedure TopeDataSet.adqExecPara(adq: TadoQuery; s: string;
  78. s1: variant);
  79. begin
  80. adq.Close;
  81. adq.SQL.Clear;
  82. adq.SQL.Text := s;
  83. adq.Parameters[0].Value := s1;
  84. adq.ExecSQL;
  85. end;
  86. procedure TopeDataSet.adqExecPara2(adq: TadoQuery; s: string; s1,
  87. s2: variant);
  88. begin
  89. adq.Close;
  90. adq.SQL.Clear;
  91. adq.SQL.Text := s;
  92. adq.Parameters[0].Value := s1;
  93. adq.Parameters[1].Value := s2;
  94. adq.ExecSQL;
  95. end;
  96. procedure TopeDataSet.adqExecPara3(adq: TadoQuery; s: string; s1,
  97. s2, s3: variant);
  98. begin
  99. adq.Close;
  100. adq.SQL.Clear;
  101. adq.SQL.Text := s;
  102. adq.Parameters[0].Value := s1;
  103. adq.Parameters[1].Value := s2;
  104. adq.Parameters[2].Value := s3;
  105. adq.ExecSQL;
  106. end;
  107. procedure TopeDataSet.adqExecPara5(adq: TadoQuery; s: string; s1,
  108. s2, s3, s4, s5: variant);
  109. begin
  110. adq.Close;
  111. adq.SQL.Clear;
  112. adq.SQL.Text := s;
  113. adq.Parameters[0].Value := s1;
  114. adq.Parameters[1].Value := s2;
  115. adq.Parameters[2].Value := s3;
  116. adq.Parameters[3].Value := s4;
  117. adq.Parameters[4].Value := s5;
  118. adq.ExecSQL;
  119. end;
  120. procedure TopeDataSet.adqExecPara6(adq: TadoQuery; s: string; s1,
  121. s2, s3, s4, s5, s6: variant);
  122. begin
  123. adq.Close;
  124. adq.SQL.Clear;
  125. adq.SQL.Text := s;
  126. adq.Parameters[0].Value := s1;
  127. adq.Parameters[1].Value := s2;
  128. adq.Parameters[2].Value := s3;
  129. adq.Parameters[3].Value := s4;
  130. adq.Parameters[4].Value := s5;
  131. adq.Parameters[5].Value := s6;
  132. adq.ExecSQL;
  133. end;
  134. procedure TopeDataSet.adqQuery(adq: TadoQuery; s: string);
  135. begin
  136. adq.Close;
  137. adq.SQL.Clear;
  138. adq.SQL.Text := s;
  139. adq.Open;
  140. end;
  141. procedure TopeDataSet.adqQueryPara(adq: TadoQuery; s: string;
  142. s1: variant);
  143. begin
  144. adq.Close;
  145. adq.SQL.Clear;
  146. adq.SQL.Text := s;
  147. adq.Parameters[0].Value := s1;
  148. adq.open;
  149. end;
  150. procedure TopeDataSet.adqQueryPara2(adq: TadoQuery;
  151. s: string; s1, s2: variant);
  152. begin
  153. adq.Close;
  154. adq.SQL.Clear;
  155. adq.SQL.Text := s;
  156. adq.Parameters[0].Value := s1;
  157. adq.Parameters[1].Value := s2;
  158. adq.open;
  159. end;
  160. procedure TopeDataSet.adqQueryPara3(adq: TadoQuery;
  161. s: string; s1, s2, s3: variant);
  162. begin
  163. adq.Close;
  164. adq.SQL.Clear;
  165. adq.SQL.Text := s;
  166. adq.Parameters[0].Value := s1;
  167. adq.Parameters[1].Value := s2;
  168. adq.Parameters[2].Value := s3;
  169. adq.Open;
  170. end;
  171. procedure TopeDataSet.adqQueryPara4(adq: TadoQuery;
  172. s: string; s1, s2, s3, s4: variant);
  173. begin
  174. adq.Close;
  175. adq.SQL.Clear;
  176. adq.SQL.Text := s;
  177. adq.Parameters[0].Value := s1;
  178. adq.Parameters[1].Value := s2;
  179. adq.Parameters[2].Value := s3;
  180. adq.Parameters[3].Value := s4;
  181. adq.Open;
  182. end;
  183. procedure TopeDataSet.Append(adq: TadoQuery);
  184. begin
  185. adq.Append;
  186. end;
  187. procedure TopeDataSet.delete(adq: TadoQuery);
  188. var
  189. i: integer;
  190. begin
  191. if adq.IsEmpty then
  192. abort;
  193. i := adq.RecNo;
  194. if queryInfo(SifDel, Scorp) then
  195. begin
  196. try
  197. adq.RecNo := i;
  198. adq.Delete;
  199. adq.UpdateBatch();  //批更新
  200. except
  201. adq.CancelBatch();
  202. info(SdelError, Scorp, 16);
  203. end;
  204. end;
  205. end;
  206. procedure TopeDataSet.flash(adq: TadoQuery);
  207. begin
  208. adq.Close;
  209. adq.Open;
  210. end;
  211. procedure TopeDataSet.Save(adq: TadoQuery);
  212. begin
  213. try
  214. adq.UpdateBatch();
  215. info(Ssave_success, Scorp);
  216. except
  217. adq.CancelBatch();
  218. info(Ssave_fail, Scorp, 16);
  219. end;
  220. end;
  221. end.
  222. procedure adqExec(adq: TadoQuery; s: string);
  223. begin
  224. adq.Close;
  225. adq.SQL.Clear;
  226. adq.SQL.Text := s;
  227. adq.ExecSQL;
  228. end;
  229. procedure adqExecPara(adq: TadoQuery; s: string;
  230. s1: variant);
  231. begin
  232. adq.Close;
  233. adq.SQL.Clear;
  234. adq.SQL.Text := s;
  235. adq.Parameters[0].Value := s1;
  236. adq.ExecSQL;
  237. end;
  238. procedure adqQuery(adq: TadoQuery; s: string);
  239. begin
  240. adq.Close;
  241. adq.SQL.Clear;
  242. adq.SQL.Text := s;
  243. adq.Open;
  244. end;
  245. procedure adqQueryPara(adq: TadoQuery; s: string; s1: variant);
  246. begin
  247. adq.Close;
  248. adq.SQL.Clear;
  249. adq.SQL.Text := s;
  250. adq.Parameters[0].Value := s1;
  251. adq.open;
  252. end;
  253. procedure Append(adq: TadoQuery);
  254. begin
  255. adq.Append;
  256. end;
  257. procedure delete(adq: TadoQuery);
  258. var
  259. i: integer;
  260. begin
  261. if adq.IsEmpty then
  262. abort;
  263. i := adq.RecNo;
  264. if queryInfo(SifDel, Scorp) then
  265. begin
  266. try
  267. adq.RecNo := i;
  268. adq.Delete;
  269. adq.UpdateBatch();
  270. except
  271. adq.CancelBatch();
  272. showmessage('Fail');
  273. end;
  274. end;
  275. end;
  276. procedure flash(adq: TadoQuery);
  277. begin
  278. adq.Close;
  279. adq.Open;
  280. end;
  281. procedure Save(adq: TadoQuery);
  282. begin
  283. try
  284. adq.UpdateBatch();
  285. showmessage('Success');
  286. except
  287. adq.CancelBatch();
  288. showmessage('Fail');
  289. end;
  290. end;
  291. end.

Delphi ADO数据操作封装类的更多相关文章

  1. Android 常用数据操作封装类案例

    1.DbHelper类 继承自SQLiteOpenHelper类,实现对数据库的基本操作 package com.example.utils; import android.content.Conte ...

  2. 初始ADO.NET数据操作

    以下介绍直接来源与百度百科,介绍十分全面和详细,作为小菜的我们没有理由不看完这些枯燥的介绍原有: ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于 ...

  3. ADO.NET访问Access(文本数据库)数据操作(CRUD)

    1,ADO.NET访问Access(文本数据库)数据操作(CRUD) 2,DatabaseDesign 文本数据库Northwind.mdb 3,/App_Code 3.1,/App_Code/DBC ...

  4. ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据

    ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  5. C# 数据操作系列 - 2. ADO.NET操作

    0.前言 在上一篇中初略的介绍了一下SQL的基本写法,这一篇开始我们正式步入C#操作数据库的范围.通过这一系列的内容,我想大家能对于数据库交互有了一定的认识和基础.闲话不多说,先给大家介绍一个C#操作 ...

  6. 编写Java程序,在维护英雄数据的业务过程中复用数据库操作封装类

    返回本章节 返回作业目录 需求说明: 继续完善英雄信息系统,将HeroAccess类中数据库连接相关代码独立出来,并将其封闭成数据库操作工具类DbConnection,便于管理和代码复用. 在Hero ...

  7. Delphi简单的数据操作类

    unit MyClass; uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   VCL ...

  8. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  9. 我的DbHelper数据操作类

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

随机推荐

  1. angularJS 系列(五)--controller AS 语法

    原文: http://www.cnblogs.com/whitewolf/p/3493362.html 这篇国外的文章也非常好: http://codetunnel.io/angularjs-cont ...

  2. 处理Easyui的Datagrid无法及时刷新问题

    在Easyui中打打开窗口dialog控件,当做完修改操作之后,关闭dialog控件刷新Datagrid,有时候无法及时刷新. 1.JavaScript中的代码 function doEdit(){ ...

  3. android脚步---UI界面修改,关于activity中增加按钮和监听

    增加按钮和监听,这个和上个不同在于,它不是在一个dialog里面,而是从新写了一个activity,因此需要先找到这个activity的入口. case R.id.checkframe: if (mC ...

  4. 可信执行环境(TEE)介绍

    可信执行环境(TEE)是Global Platform(GP)提出的概念.针对移动设备的开放环境,安全问题也越来越受到关注,不仅仅是终端用户,还包括服务提供者,移动运营商,以及芯片厂商.TEE是与设备 ...

  5. HDU 1896 Stones(优先队列)

    还是优先队列 #include<iostream> #include<cstdio> #include<cstring> #include<queue> ...

  6. 基于js脚本的单机黄金点游戏

    题目描述 N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G( ...

  7. ionic常用命令记录

    npm install -g ionic //安装ionic ionic lib update //更新www/lib/ionic 目录的文件,如有项目中有bower,此命令会运行bower upda ...

  8. Android开发:组播(多播)与广播

    近期由于需要编写能够使同一局域网中的Android客户端与PC端进行自动匹配通信功能的程序,学习并试验了JAVA组播与广播的内容,记录一些理解如下: 一.组播(多播) 背景知识:组播使用UDP对一定范 ...

  9. C程序编译执行过程

    C程序编译执行过程   认识C编译执行过程,是C学习的开端. 简单说C语言从编码编译到执行要经历一下过程:   C源代码 编译---->形成目标代码,目标代码是在目标机器上运行的代码. 连接-- ...

  10. Freertos之系统配置

    Freertos之系统配置 http://blog.csdn.net/liyuanbhu/article/details/7912170/