• DBAccess


    01.单SQL执行.DBA.ExeuteSQL(SQL语句,是否返回值,是否事务处理,返回值<字符型>):Boolean;

       -- 执行SQL后,将影响的行数进行返回

    02.批量SQL执行.DBA.ExecuteBatchSql(TStringList,是否事务):Boolean;

       --将需要执行的SQL添加到TStringList中去,然后一次性执行,要么都成功,要么都失败

    03.数据库存储过程的执行 DBA.ExecuteStoredProc(过程名,参数对象,是否事务):Boolean;

       --参数名称,需与存储过程中定义的参数名一致,否则会出现参数找不着的错误

       --在配置参数时,三号参数需要标识参数方向,是传入参数还是返回参数

    04.数据库存储守程返回数据集的应用

       DBA.ReadStoredProcDataset(存储过程名,参数对象,数据集个数,是否ADO模式):Boolean;

       --数据集个数:返回的数据集个数,

      --是否ADO模式:如果开启则需要使用AdoDataSet对象接收数据集;如果不开启,使用CDS接收数据集

       --数据集的接收:ReadStoredProcDataset(序位,接收对象<CDS或AdoDataSet>) 

              序位从0开始,只取一次,取完后,自动清理

       --数据集的清理:ClearStoredProcDataSet;

       -------------------------------------------------------------------------------

       解析动作:存储过程可使用 TAdoStoredProc进行处理,也可以直接使用AdoQuery进行处理

                   a.配置好正常的SQL语句,通过Open执行,

                   b.借用 _RecordSet;进行多数据集的提取 ==> var NR:_RecordSet

                   c.NR := Qry1.RecordSet;

                     while NR<>nil do

                     begin

                        Qry2.RecordSet := NR;    --> 如果上面开启ADO模式,则直接返回Qry2

                        --这里使用的是TAdoQuery,也可以使用 TAdoDataSet.RecordSet := NR;

                        --若需要返回CDS数据,则借用 TDataSetProvider进行转换

                        TDataSetProvider.dataset := Qry2;

                        CDS.Data := TDataSetProvider.data; --将CDS进行返回                    

                     end

       -------------------------------------------------------------------------------

       特别说明:如果要同步返回多个数据集,上面的Qry2和CDS需要动态创建,才满足遍历的多数据集

          返回,当然,如果明确知道有几个数据集,则可以分别用一同的数据集接收

       -------------------------------------------------------------------------------

    05.DBA对数据集的读取

       a.ReadDataset(SQL语句,CDS或Ado数据集):Boolean; 只是简单的读取数据集回来

       b.大数据集读取

         function ReadLargeDataset(aSQLStr: String; RecordsPerPage: integer; var RetCDS: TClientDataset): boolean; overload;

         在读取大数据集时,会触发 OnDatasetFetchProgress 事件,可用于处理进度条事件    

         function ReadLargeDataset(aSQLStr: String; RecordsPerPage: integer; LocalTable: string; LocalAdoConn: TAdoConnection): boolean;

    overload

         在读取大数据集时,也可转存到本地数据库中去,但需要标识要写入哪个数据库表,同时提供对本地数据库的连接

       c.简单返回值的读取: function ReadSimpleResult(SqlCommand: string; var RetValue: string): boolean;

         如Select count(*)、Select sum()等,执行此SQL命令所返回的简单值,通过RetValue返回。

       d.对读大数据过程中的取消读取: ReadLargeCancel;

    06.DBA对数据集的写操作

       a.绝对的向数据表中写数据: function WriteDataset(Cds: TClientDataset; TableName: string; Condition: string=''): boolean;

         如果Condition不为空,则系统将会先删除符合条件的记录,然后再进行数据的插入操作

    07.DBA数据表结构的读取: function ReadTableHead(TableName: string; var Cds: TClientDataset): boolean; overload;

       实际返回的就是一个没有符合条件记录的空数据集,数据表结构还是以字段方式存在,而不是对数据表结构的详细描述说明

    08.DBA数据记录的追加:

       a. AppendRecord(TableName: string; RecordParcel: TQBParcel)

          先创建一个QBParcel,并按字段类型,向里面添加记录数据:  字段名与字段值

          然后再调用AppendRecord进行数据记录的添加

          *** 字段名称不能超过30个字符,否则会被忽略掉

       b. 使用CDS来添加记录

          先用ReadTableHead读取数据表结构,然后再往CDS中添加记录

          最后调用 AppendRecord(表名,CDS)来提交数据

          ** 但本方法只支持一次添加一条记录(内部封装时,限制了一条)

       ---------------------------------------------------------------

       同样的对于数据记录的修改,也可以使用QBParcel和CDS二种方法,

       只不过调用的方法分别变成了: UpdateRecord(表名,条件,数据集记录) ==>同样的受限于1条记录

    09.DBA对CDS异动数据的提交

       a. 直接提交Delta: CommitCdsDelta(TableName: String; KeyFieldList: String; Delta: OleVariant)

          这种方法对提交的Delta中,将原来的值改成Null值的时候无法处理

       b. 直接提交CDS:CommitCdsDelta(TableName: String; KeyFieldList: String; Cds: TClientDataset)

       ----------------------------------------

      ** 数据提交成功后,需要对本地CDS进行合并操作: CDS.MergeChangeLog;

    10.多数据集读取

          借用 TStringList进行SQL的存储, 然后统一调用

          通过 ReadMultipleDatasets(BatchSQL: TStringList; IsAdoFormat: boolean=false) 进行读取     

          通过 GetResultDataset(aIndex: integer; var aCds: TClientDataset)进行数据集的提取

          通过 ClearResultDataSets 进行结果集的清理

    11.多数据集写操作

       a.先添加要写库的数据集: AddWriteDataset(TableName: string; ClearSql: string; 数据集<CDS或AdoDataSet>):   

       b.添加完成后,再写:WriteMultipleDatasets();

       c.清理: ClearWriteDataSets;

    12.主键值的生成

        GenerateId(表名; 关键字段名; 过滤条件; FieldMask: ansistring; ConstList: ansistring; var NewId: ansistring):

        FieldMask: 关键字段编码范式,内含的字符串意义为:

                 A: 自增型字段

                 I: 整数型字段

                 YY: 两位年

                 YYYY: 四位年

                 MM: 月

                 DD: 日

                 HH: 时

                 NN: 分

                 SS: 秒

                 XX...X: 流水号(长度取决于X的个数,一个键值里最多只能有一个)

                 CC..C: 固定字符串(长度取决于C的个数,一个键值里可有多个)

                 ConstList: 编码范式中存在固定字符时所对应的实际字符串,若有多个串,中间用半角逗号分隔

        关键值的退还

             FreeUnusedId(TableName: string; KeyFieldName: string; FilterCondition: string; IdToFree: ansistring)

    13.分页查询的处理

    14.大数据集的读取  ReadLargeDataset(SQL语句,每页记录数,接收CDS)

  • 相关阅读:
    shell脚本中echo颜色设置
    整合Spring+Hibernate+Struts2的时候发现json数据一直无法传到页面,提示no-Session
    分页查询——Hibernate Criteria实现一次查询取得总记录数和分页后结果集
    JS,JQ 格式化小数位数
    简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示
    二级联动,三级联动,初学者,纯javascript,不含jQuery
    Oracle数据库知识要点
    ParameterizedType理解笔记
    JDBC mysql 相关内容笔记
    在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来
  • 原文地址:https://www.cnblogs.com/jieling/p/5868387.html
Copyright © 2020-2023  润新知