zoukankan      html  css  js  c++  java
  • 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.   
  • 相关阅读:
    Android为TV端助力:adb查找包名位置
    Android为TV端助力:RecyclerView更新数据时焦点丢失
    一个IOS自动化打包的脚本
    关于IOS免证书真机安装的过程和问题
    使用CoreAnimation 实现相机拍摄照片之后动画效果
    解决路由器无线中继连接不稳定的问题
    解决 an app id with identifier is not available. please enter a different string. xcode 7.3
    CoreText 关键性常用函数说明
    解决Xcode 7 http无法使用的问题
    解决IOS9 下在App中无法打开其他应用的问题
  • 原文地址:https://www.cnblogs.com/qingsong/p/3507176.html
Copyright © 2011-2022 走看看