Delphi ADO数据操作封装类

时间:2023-03-09 05:10:29
Delphi ADO数据操作封装类
  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.

相关文章