Delphi ADO数据操作封装类

  1. { 
  2.  
  3.  将数据集操作方面的东西全部封装成一个单独的类 
  4.  
  5.  TcustomAdoDataSet是TadoQuery、TadoTable、TadoDataSet、TadoCommand的公共祖先类 
  6.  
  7.  应尽量使用TadoDataSet和TadoCommand类 
  8.  
  9. }  
  10.   
  11. unit untOpeDataSet;  
  12.   
  13.   
  14.   
  15. interface  
  16.   
  17.   
  18.   
  19. uses  
  20.   
  21.   SysUtils,  
  22.   
  23.   db, adodb, commonFunction, msg;  
  24.   
  25.   
  26.   
  27. type  
  28.   
  29.   TopeDataSet = class  
  30.   
  31.   public  
  32.   
  33.     {修改已发生,但还没有得到应用的记录,在关闭窗口前应给予提示}  
  34.   
  35.     function adoUpdatesPending(adoDataSet: TCustomAdoDataSet): boolean;  
  36.   
  37.     {增加}  
  38.   
  39.     procedure Append(adq: TadoQuery);  
  40.   
  41.     {保存}  
  42.   
  43.     procedure Save(adq: TadoQuery);  
  44.   
  45.     {删除}  
  46.   
  47.     procedure delete(adq: TadoQuery);  
  48.   
  49.     {刷新数据集}  
  50.   
  51.     procedure flash(adq: TadoQuery);  
  52.   
  53.     {事务提交}  
  54.   
  55.     procedure adqCommit(adq: TadoQuery);  
  56.   
  57.     {查询数据集}  
  58.   
  59.     procedure adqQuery(adq: TadoQuery; s: string);  
  60.   
  61.     {带参查询数据集}  
  62.   
  63.     procedure adqQueryPara(adq: TadoQuery; s: string; s1: variant);  
  64.   
  65.     procedure adqQueryPara2(adq: TadoQuery; s: string; s1: variant; s2: variant);  
  66.   
  67.     procedure adqQueryPara3(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant);  
  68.   
  69.     procedure adqQueryPara4(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant);  
  70.   
  71.     {更新数据集}  
  72.   
  73.     procedure adqExec(adq: TadoQuery; s: string);  
  74.   
  75.     {带参更新数据集}  
  76.   
  77.     procedure adqExecPara(adq: TadoQuery; s: string; s1: variant);  
  78.   
  79.     procedure adqExecPara2(adq: TadoQuery; s: string; s1: variant; s2: variant);  
  80.   
  81.     procedure adqExecPara3(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant);  
  82.   
  83.     procedure adqExecPara5(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant; s5: variant);  
  84.   
  85.     procedure adqExecPara6(adq: TadoQuery; s: string; s1: variant; s2: variant; s3: variant; s4:       variant; s5: variant; s6: variant);  
  86.   
  87.   end;  
  88.   
  89.   
  90.   
  91. implementation  
  92.   
  93.   
  94.   
  95. { TopeDataSet }  
  96.   
  97.   
  98.   
  99. function TopeDataSet.adoUpdatesPending(  
  100.   
  101.   adoDataSet: TCustomAdoDataSet): boolean;  
  102.   
  103. var  
  104.   
  105.   clone: TadoDataSet;  
  106.   
  107. begin  
  108.   
  109.   clone := TadoDataSet.create(nil);  
  110.   
  111.   try  
  112.   
  113.     clone.clone(adoDataSet);               //复制  
  114.   
  115.     clone.filterGroup := fgPendingRecords; //已得到修改但还没有得到应用的所有记录  
  116.   
  117.     clone.filtered := true;  
  118.   
  119.     result := not(clone.bof and clone.eof);  
  120.   
  121.     clone.close;  
  122.   
  123.   finally  
  124.   
  125.     clone.free;  
  126.   
  127.   end;  
  128.   
  129. end;  
  130.   
  131.   
  132.   
  133. procedure TopeDataSet.adqCommit(adq: TadoQuery);  
  134.   
  135. begin  
  136.   
  137.   try  
  138.   
  139.     adq.Connection.CommitTrans;  
  140.   
  141.     info(SopeSuccess, Scorp);  
  142.   
  143.   except  
  144.   
  145.     adq.Connection.RollbackTrans;  
  146.   
  147.     info(SopeFail, Scorp, 16);  
  148.   
  149.   end;  
  150.   
  151. end;  
  152.   
  153.   
  154.   
  155. procedure TopeDataSet.adqExec(adq: TadoQuery; s: string);  
  156.   
  157. begin  
  158.   
  159.   adq.Close;  
  160.   
  161.   adq.SQL.Clear;  
  162.   
  163.   adq.SQL.Text := s;  
  164.   
  165.   adq.ExecSQL;  
  166.   
  167. end;  
  168.   
  169.   
  170.   
  171. procedure TopeDataSet.adqExecPara(adq: TadoQuery; s: string;  
  172.   
  173.   s1: variant);  
  174.   
  175. begin  
  176.   
  177.   adq.Close;  
  178.   
  179.   adq.SQL.Clear;  
  180.   
  181.   adq.SQL.Text := s;  
  182.   
  183.   adq.Parameters[0].Value := s1;  
  184.   
  185.   adq.ExecSQL;  
  186.   
  187. end;  
  188.   
  189.   
  190.   
  191. procedure TopeDataSet.adqExecPara2(adq: TadoQuery; s: string; s1,  
  192.   
  193.   s2: variant);  
  194.   
  195. begin  
  196.   
  197.   adq.Close;  
  198.   
  199.   adq.SQL.Clear;  
  200.   
  201.   adq.SQL.Text := s;  
  202.   
  203.   adq.Parameters[0].Value := s1;  
  204.   
  205.   adq.Parameters[1].Value := s2;  
  206.   
  207.   adq.ExecSQL;  
  208.   
  209. end;  
  210.   
  211.   
  212.   
  213. procedure TopeDataSet.adqExecPara3(adq: TadoQuery; s: string; s1,  
  214.   
  215.   s2, s3: variant);  
  216.   
  217. begin  
  218.   
  219.   adq.Close;  
  220.   
  221.   adq.SQL.Clear;  
  222.   
  223.   adq.SQL.Text := s;  
  224.   
  225.   adq.Parameters[0].Value := s1;  
  226.   
  227.   adq.Parameters[1].Value := s2;  
  228.   
  229.   adq.Parameters[2].Value := s3;  
  230.   
  231.   adq.ExecSQL;  
  232.   
  233. end;  
  234.   
  235.   
  236.   
  237. procedure TopeDataSet.adqExecPara5(adq: TadoQuery; s: string; s1,  
  238.   
  239.   s2, s3, s4, s5: variant);  
  240.   
  241. begin  
  242.   
  243.   adq.Close;  
  244.   
  245.   adq.SQL.Clear;  
  246.   
  247.   adq.SQL.Text := s;  
  248.   
  249.   adq.Parameters[0].Value := s1;  
  250.   
  251.   adq.Parameters[1].Value := s2;  
  252.   
  253.   adq.Parameters[2].Value := s3;  
  254.   
  255.   adq.Parameters[3].Value := s4;  
  256.   
  257.   adq.Parameters[4].Value := s5;  
  258.   
  259.   adq.ExecSQL;  
  260.   
  261. end;  
  262.   
  263.   
  264.   
  265. procedure TopeDataSet.adqExecPara6(adq: TadoQuery; s: string; s1,  
  266.   
  267.   s2, s3, s4, s5, s6: variant);  
  268.   
  269. begin  
  270.   
  271.   adq.Close;  
  272.   
  273.   adq.SQL.Clear;  
  274.   
  275.   adq.SQL.Text := s;  
  276.   
  277.   adq.Parameters[0].Value := s1;  
  278.   
  279.   adq.Parameters[1].Value := s2;  
  280.   
  281.   adq.Parameters[2].Value := s3;  
  282.   
  283.   adq.Parameters[3].Value := s4;  
  284.   
  285.   adq.Parameters[4].Value := s5;  
  286.   
  287.   adq.Parameters[5].Value := s6;  
  288.   
  289.   adq.ExecSQL;  
  290.   
  291. end;  
  292.   
  293.   
  294.   
  295. procedure TopeDataSet.adqQuery(adq: TadoQuery; s: string);  
  296.   
  297. begin  
  298.   
  299.   adq.Close;  
  300.   
  301.   adq.SQL.Clear;  
  302.   
  303.   adq.SQL.Text := s;  
  304.   
  305.   adq.Open;  
  306.   
  307. end;  
  308.   
  309.   
  310.   
  311. procedure TopeDataSet.adqQueryPara(adq: TadoQuery; s: string;  
  312.   
  313.   s1: variant);  
  314.   
  315. begin  
  316.   
  317.   adq.Close;  
  318.   
  319.   adq.SQL.Clear;  
  320.   
  321.   adq.SQL.Text := s;  
  322.   
  323.   adq.Parameters[0].Value := s1;  
  324.   
  325.   adq.open;  
  326.   
  327. end;  
  328.   
  329.   
  330.   
  331. procedure TopeDataSet.adqQueryPara2(adq: TadoQuery;  
  332.   
  333.   s: string; s1, s2: variant);  
  334.   
  335. begin  
  336.   
  337.   adq.Close;  
  338.   
  339.   adq.SQL.Clear;  
  340.   
  341.   adq.SQL.Text := s;  
  342.   
  343.   adq.Parameters[0].Value := s1;  
  344.   
  345.   adq.Parameters[1].Value := s2;  
  346.   
  347.   adq.open;  
  348.   
  349. end;  
  350.   
  351.   
  352.   
  353. procedure TopeDataSet.adqQueryPara3(adq: TadoQuery;  
  354.   
  355.   s: string; s1, s2, s3: variant);  
  356.   
  357. begin  
  358.   
  359.   adq.Close;  
  360.   
  361.   adq.SQL.Clear;  
  362.   
  363.   adq.SQL.Text := s;  
  364.   
  365.   adq.Parameters[0].Value := s1;  
  366.   
  367.   adq.Parameters[1].Value := s2;  
  368.   
  369.   adq.Parameters[2].Value := s3;  
  370.   
  371.   adq.Open;  
  372.   
  373. end;  
  374.   
  375.   
  376.   
  377. procedure TopeDataSet.adqQueryPara4(adq: TadoQuery;  
  378.   
  379.   s: string; s1, s2, s3, s4: variant);  
  380.   
  381. begin  
  382.   
  383.   adq.Close;  
  384.   
  385.   adq.SQL.Clear;  
  386.   
  387.   adq.SQL.Text := s;  
  388.   
  389.   adq.Parameters[0].Value := s1;  
  390.   
  391.   adq.Parameters[1].Value := s2;  
  392.   
  393.   adq.Parameters[2].Value := s3;  
  394.   
  395.   adq.Parameters[3].Value := s4;  
  396.   
  397.   adq.Open;  
  398.   
  399. end;  
  400.   
  401.   
  402.   
  403. procedure TopeDataSet.Append(adq: TadoQuery);  
  404.   
  405. begin  
  406.   
  407.   adq.Append;  
  408.   
  409. end;  
  410.   
  411.   
  412.   
  413. procedure TopeDataSet.delete(adq: TadoQuery);  
  414.   
  415. var  
  416.   
  417.   i: integer;  
  418.   
  419. begin  
  420.   
  421.   if adq.IsEmpty then  
  422.   
  423.     abort;  
  424.   
  425.   i := adq.RecNo;  
  426.   
  427.   if queryInfo(SifDel, Scorp) then  
  428.   
  429.   begin  
  430.   
  431.     try  
  432.   
  433.       adq.RecNo := i;  
  434.   
  435.       adq.Delete;  
  436.   
  437.       adq.UpdateBatch();  //批更新  
  438.   
  439.     except  
  440.   
  441.       adq.CancelBatch();  
  442.   
  443.       info(SdelError, Scorp, 16);  
  444.   
  445.     end;  
  446.   
  447.   end;  
  448.   
  449. end;  
  450.   
  451.   
  452.   
  453. procedure TopeDataSet.flash(adq: TadoQuery);  
  454.   
  455. begin  
  456.   
  457.   adq.Close;  
  458.   
  459.   adq.Open;  
  460.   
  461. end;  
  462.   
  463.   
  464.   
  465. procedure TopeDataSet.Save(adq: TadoQuery);  
  466.   
  467. begin  
  468.   
  469.   try  
  470.   
  471.     adq.UpdateBatch();  
  472.   
  473.     info(Ssave_success, Scorp);  
  474.   
  475.   except  
  476.   
  477.     adq.CancelBatch();  
  478.   
  479.     info(Ssave_fail, Scorp, 16);  
  480.   
  481.   end;  
  482.   
  483. end;  
  484.   
  485.   
  486.   
  487. end.  
  488.   
  489. procedure adqExec(adq: TadoQuery; s: string);  
  490.   
  491. begin  
  492.   
  493.   adq.Close;  
  494.   
  495.   adq.SQL.Clear;  
  496.   
  497.   adq.SQL.Text := s;  
  498.   
  499.   adq.ExecSQL;  
  500.   
  501. end;  
  502.   
  503.   
  504.   
  505. procedure adqExecPara(adq: TadoQuery; s: string;  
  506.   
  507.   s1: variant);  
  508.   
  509. begin  
  510.   
  511.   adq.Close;  
  512.   
  513.   adq.SQL.Clear;  
  514.   
  515.   adq.SQL.Text := s;  
  516.   
  517.   adq.Parameters[0].Value := s1;  
  518.   
  519.   adq.ExecSQL;  
  520.   
  521. end;  
  522.   
  523.   
  524.   
  525. procedure adqQuery(adq: TadoQuery; s: string);  
  526.   
  527. begin  
  528.   
  529.   adq.Close;  
  530.   
  531.   adq.SQL.Clear;  
  532.   
  533.   adq.SQL.Text := s;  
  534.   
  535.   adq.Open;  
  536.   
  537. end;  
  538.   
  539.   
  540.   
  541. procedure adqQueryPara(adq: TadoQuery; s: string; s1: variant);  
  542.   
  543. begin  
  544.   
  545.   adq.Close;  
  546.   
  547.   adq.SQL.Clear;  
  548.   
  549.   adq.SQL.Text := s;  
  550.   
  551.   adq.Parameters[0].Value := s1;  
  552.   
  553.   adq.open;  
  554.   
  555. end;  
  556.   
  557.   
  558.   
  559. procedure Append(adq: TadoQuery);  
  560.   
  561. begin  
  562.   
  563.   adq.Append;  
  564.   
  565. end;  
  566.   
  567.   
  568.   
  569. procedure delete(adq: TadoQuery);  
  570.   
  571. var  
  572.   
  573.   i: integer;  
  574.   
  575. begin  
  576.   
  577.   if adq.IsEmpty then  
  578.   
  579.     abort;  
  580.   
  581.   i := adq.RecNo;  
  582.   
  583.   if queryInfo(SifDel, Scorp) then  
  584.   
  585.   begin  
  586.   
  587.     try  
  588.   
  589.       adq.RecNo := i;  
  590.   
  591.       adq.Delete;  
  592.   
  593.       adq.UpdateBatch();    
  594.   
  595.     except  
  596.   
  597.       adq.CancelBatch();  
  598.   
  599.       showmessage('Fail');  
  600.   
  601.     end;  
  602.   
  603.   end;  
  604.   
  605. end;  
  606.   
  607.   
  608.   
  609. procedure flash(adq: TadoQuery);  
  610.   
  611. begin  
  612.   
  613.   adq.Close;  
  614.   
  615.   adq.Open;  
  616.   
  617. end;  
  618.   
  619.   
  620.   
  621. procedure Save(adq: TadoQuery);  
  622.   
  623. begin  
  624.   
  625.   try  
  626.   
  627.     adq.UpdateBatch();  
  628.   
  629.     showmessage('Success');  
  630.   
  631.   except  
  632.   
  633.     adq.CancelBatch();  
  634.   
  635.     showmessage('Fail');  
  636.   
  637.   end;  
  638.   
  639. end;  
  640.   
  641.   
  642.   
  643. end.   
原文地址:https://www.cnblogs.com/qingsong/p/3507176.html