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)

DBAccess的更多相关文章

  1. informix dbaccess 常用执行方式及常见技巧

    假设: A.数据库servername: testserver B.数据库名:testdb C.SQL脚本文件: sqlfile.sql create table test_table(c1 inte ...

  2. .net增删该查DBAccess的应用

    1.首先引用dll文件 2. //DBAccess.dll引用一個dll文件    private IDBAccess _access;    private static readonly stri ...

  3. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  4. EF 添加方式比较

    using System; using System.Collections.Generic; using DBAccess.Models; using EntityFramework.BulkIns ...

  5. 测试EntityFramework,Z.EntityFramework.Extensions,原生语句在不同的查询中的表现。原来池化与非池化设定是有巨大的影响的。

    Insert测试,只测试1000条的情况,多了在实际的项目中应该就要另行处理了. using System; using System.Collections.Generic; using Syste ...

  6. 从SQLite获取数据完成一个产品信息展示

    在ios实际开发当中,我们常常用到Core Data做为数据储存首选.但在处理一些大量复杂的数据值且数据之间相互关联的时候,这就不得不使用关系型数据库来实现.例如一个导航程序,自身应该包含大量的地图自 ...

  7. 框架基础之Hibernate简介

    框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...

  8. 架构实例之Demo_JSP_JavaBean

    架构实例之Demo_JSP_JavaBean 1.开发工具和开发环境      开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.1 ...

  9. Java项目多数据源配置

    由于种种原因,有的时候可能要连接别人的数据库,或者不同的数据库没法自动转换,重构起来数据量又太大了,我们不得不在一个项目中连接多个数据源.从网上找了各种资料,只有这位大神给出的解决方案一下子就成功了. ...

随机推荐

  1. 使用Redux管理你的React应用

    因为redux和react的版本更新的比较频繁,博客园这里用的redux版本是1.0.1,如果你关心最新版本的使用技巧,欢迎来我的Github查看(https://github.com/matthew ...

  2. nodejs框架express准备登录

    目录: 安装模板 静态资源 添加视图 渲染视图 url重定向 模板引擎 从本节课程开始我们要使用express框架实现一个简单的用户登陆功能,让我们先准备一下相关资源. 在nodejs中使用expre ...

  3. 基于tp框架实现的递归城市查询

    控制器层: 接下来就是模型层: 如果说你的数据量庞大到致使apache或者nginx停止运行,有两点原因: 1.代码耦合性不高,代码有错误: 2.php.ini里面有一个memory_limit的这个 ...

  4. Tomcat常见的内存溢出,以及解决方法

    一.常见的三种内存溢出错误: 1.java.lang.OutOfMemoryError:java heap space    ====JVM Heap(堆)溢出 JVM再启动的时候回自动设置JVM H ...

  5. gfortran编译Fortran数组问题

    可能是IVF(inter visual fortran)比LF(lahey Fortran)编译器比较严格的原因 real :: A(L,M) = (/ 1,2,3,4,5,6,7,8,9,10,11 ...

  6. zigbee学习之路(九):串口(发送)

    一.前言 今天,我们来学习和实验串口模块方面的,串口通信是我们常用的通信手段,通过串口交互,我们可以很容易的和pc机进行数据的交换和发送,所以我们今天就来学习一下.这个实验所进行的功能是一开始CC25 ...

  7. Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  8. easyui datagrid tooltip

    $('#dg').datagrid('getPanel').find('.easyui-tooltip').each(function(){ var index = parseInt($(this). ...

  9. 【设计模式】常用de单例模式

    > 单例模式 单例模式,是常见的设计模式之一,一般来说,是程序员较早接触的模式之一.嘻嘻,包括我~~~ > 分类 一般来说,分两种: 饿汉模式.非常饿嘛,一上来就加载了,所以,就是非延迟加 ...

  10. 【Spring】搭建最简单的Spring MVC项目

    每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用 ...