tinyxml 内存泄露_盒子论坛

导航:

论坛 -> 发布控件

斑竹:liumazi,ruralboy

作者:

★☆☆☆☆

-

普通会员

2012/7/6 9:52:59

标题:

QDAC A3完整源码和示例

浏览:13255

楼主:

QDAC(Qucik Data Access Component) Alpha 3

这个是QDAC的完整源码包,包括组件的源码和C++ Builder的示例代码,以及编译后可以直接执行的二进制程序,但由于是内测版本,暂时还不包括注册到面板上的支持,只能动态创建对象。

系统特性:

1、TMemoryDataSet提供内存数据集对象,支持以下特性:

√ 基于TDataSet继承下来的各种方法和属性;

√ 数据集之间相互克隆(只读或读写);

√ 数据集内容复制(原始内容,当前内容,变更内容,排序结果,过滤结果);

√ 数据集之间进行集合运算(交、并、差)

√ 数据集任意非计算字段的排序、过滤(可扩展支持正则表达式)

√ 保存数据到CSV、XML和原生的MDS,压缩的MDZ格式,并支持反向加载;

√ 支持应用变更结果到不同的连接数据库;

√ 已变更内容可以撤消到上次应用变更后(或原始数据)状态;

√ 通过TMemoryDataProvider的各个子类实现对PostgreSQL数据库的访问,根据需要,可以加入更多数据库支持;

√ 更快的速度,打开数据速度比一般的数据库接口更快(Unidac/ado等)

2、TMemoryDataConverter提供数据的格式转换支持,包括以下子类:

√ TTextDataConverter 提供CSV格式的文本文件的保存和加载(只支持当前有效内容)

√ TMDSDataConverter 提供原生的MDS格式的保存及加载(包含变更信息)

√ TMDZDataConverter 提供压缩的原生格式的保存及加载(TMDSDataConverter的压缩版本)

√ TXMLDataConverter 提供ADO兼容的XML格式的保存及加载(包含变更信息)

√ 其它类型的格式,可以继承TMemoryDataConverter实现

3、TMemoryDataProvider提供与数据库的统一访问接口支持,目前仅包含TPgSQLDataProvider

√ 支持打开数据集、执行SQL脚本及事务控制等常规操作;

√ 支持将SQL脚本返回的结果集直接保存到流中,格式支持:CSV、XML和原生的MDS,压缩的MDZ格式,其它格式

支持需通过对应的TMemoryDataConverter的子类实现;

√ 支持类型和架构缓存,更快的获取数据库相关架

√ 支持通过连接字符串、连接参数打开连接;

主要改进:

2012.7.6 α 3 内测版

* 修正了发现的Invalid field size问题

+ 加入了数据集之间的集合运算,交、并、差都支持!

2012.7.5 α 2 内测版

* 修正了复制原始数据时,复制了修改后的数据的问题

* 修正了连接字符串解析错误

* 修正了应用更新或取消更新后的由于引用计数错误,造成记录缓冲区释放所引发的AV错误

* 修正了克隆时,克隆后的数据集变更时,没有及时更新源的缓冲区的问题

+ 过滤条件表达式新增不等于(<>或者!=)和不包含(nlike)的支持

下载地址:

http://vdisk.weibo.com/s/8aA8j

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 9:55:20

1楼:

1.Formats.exe

这个例子演示了如何导入或导出数据到多种格式:

a.MDS:内部数据格式,原生的,速度的!

b.MDZ:MDS格式的压缩版本,适合在多层程序通过互联网传送.

c.XML:ADO兼容的XML格式,不像UniDAC,你不仅能导出XML,还能导入并更新到数据库。

d.TXT/CSV:标准的TXT和CSV格式支持,受限于格式,不能保存变更信息.

如果你希望支持新的格式,可以联系我.

当然,导出到文件的时候,你可以只导出发生变动的数据。是不是感觉特别有用?

贴图:

此帖子包含附件:

大小:30.3K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 9:56:36

2楼:

导出的一个ADO兼容的XML文件,注意它还支持导入!

此帖子包含附件:

大小:69.7K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 9:57:52

3楼:

这个例子演示了如何克隆数据,非只读的克隆在一个修改后,另一个会同步发生变更。

如果你用过ADO组件,应该已经知道克隆是怎么回事了:

此帖子包含附件:

大小:30.8K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 9:59:04

4楼:

这个例子演示了QDAC组件特有的一个功能!你可以很简单的复制源数据集的内容到新的数据集!在许多应用程序中,这意味着你不需要传输没必要的额外数据到另一个程序,如只交换发生变更的数据。

此帖子包含附件:

大小:44.3K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 10:00:28

5楼:

当前你所看到的数据集控件中英气是最强大的过滤了,在表达式中你可以使用:

= 等于

<> 不等于

!= 不等于

> 大于

>= 大于等于

<= 小于等于

* 包含

like 包含

nlike 不包含(特有)

~ 正则匹配(特有)

表达式可以用'('和')'分组,表达式间可以用'and'和'or'关联。

此帖子包含附件:

大小:35.2K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 10:01:32

6楼:

集合运行,并、交、差!

此帖子包含附件:

大小:23.0K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 10:04:00

7楼:

客户端排序

此帖子包含附件:

大小:33.5K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 10:08:00

8楼:

连接到PostgresSQL数据库,目前最快的PostgresSQL数据库访问速度。

此帖子包含附件:

大小:32.7K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

hbug (hbug)

★☆☆☆☆

-

普通会员

2012/7/6 12:05:28

9楼:

说的这么好,想下一个,还得注册新浪微薄,谁能转到FTP上呢?

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

专业提供人力资源软件、指纹考勤软件、POS进销存软件、酒店餐饮软件

http://www.winsoftcn.com

作者:

▲▲▲▲▲

-

注册会员

2012/7/6 12:54:42

10楼:

无法下载,好心的朋友,请伸出援手!

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

人间冷暖情为贵,世事沧桑欲坚强。

作者:

★☆☆☆☆

-

普通会员

2012/7/6 13:42:30

11楼:

微盘可以下载呀~~~

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

doremi (天籁之音)

▲▲▲▲△

-

注册会员

2012/7/6 15:22:25

12楼:

楼主是分享软件还是替新浪拉微波注册用户呢?

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

-

作者:

★☆☆☆☆

-

普通会员

2012/7/6 16:09:16

13楼:

呵呵,这个是我自己写的,分享给各位的。

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/6 17:08:53

14楼:

能不能,支持SQLite或MSSQL2000.。。这样便于测试

已经上传Ftp

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

-

作者:

▲▲▲▲▲

-

注册会员

2012/7/6 17:11:55

15楼:

To 楼主,不是不能下载,是要注册时,提示系统忙碌…试了n遍,依然如此(可能是所在地的关系),。恳请楼主,方便的话可否将它放上盒子或传入我的邮箱,辛苦您了!

e-mail:g6101@ms19.hinet.net

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

人间冷暖情为贵,世事沧桑欲坚强。

作者:

▲▲▲▲▲

-

注册会员

2012/7/6 18:31:43

16楼:

已下載,感謝樓主及14樓的朋友。

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

人间冷暖情为贵,世事沧桑欲坚强。

作者:

xinjian214 (xinjian214)

★☆☆☆☆

-

普通会员

2012/7/6 19:11:04

17楼:

lz你是个好人

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

-

作者:

★☆☆☆☆

-

普通会员

2012/7/6 19:40:44

18楼:

已加入sqlite3支持,明天发布beta 1版

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

zhlmxh (梦想成真)

★☆☆☆☆

-

盒子活跃会员

2012/7/6 22:35:15

19楼:

不错啊,支持国产数据库访问组件,如果功能强大,可以赞助,以资支持

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

-

作者:

zhlmxh (梦想成真)

★☆☆☆☆

-

盒子活跃会员

2012/7/6 22:37:33

20楼:

希望作者能够坚持做下去,而不是昙花一现

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

-

作者:

james_ (james_)

★☆☆☆☆

-

盒子活跃会员

2012/7/6 23:41:14

21楼:

tks

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

-

作者:

★☆☆☆☆

-

普通会员

2012/7/7 7:30:32

22楼:

最新版本:

2012.7.7 β 1 公测版

* 修正了使用连接参数时,用户口令不正确的问题

+ 新增SQLite3的数据库程序支持

+ 新增BatchMode属性(默认为true),以便切换批量更新模式和简单模式

+ 新增CommandText属性,以简化数据库脚本的设置

+ 增加了C++ Builder 2007和Delphi 2007的组件安装包,可以正常安装到组件面板(我目前只使用RAD Studio 2007,所以其它的组件包目前是没有的)

下载链接:

http://vdisk.weibo.com/s/8e17a

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 8:40:54

23楼:

搬运工。。最新版,已经上传FTP

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

-

作者:

★☆☆☆☆

-

普通会员

2012/7/7 9:27:49

24楼:

zhlmxh (梦想成真):不错啊,支持国产数据库访问组件,如果功能强大,可以赞助,以资支持

如果有赞助当然更好了~~~,我最喜欢小钱钱~~~

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 9:29:06

25楼:

另外自己新建了个C++ Builder的微群,有兴趣的朋友加吧(这个是推广了):

http://q.weibo.com/1085250

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 10:03:58

26楼:

QDAC Beta1发现了一个SQLite驱动在应用变更和提交事务时的Bug,已经修复,将随下一个版本一起发布。

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 11:01:57

27楼:

QDAC PostgreSQL与UniDAC速度对比,快了约48%!

测试代码:

procedure TForm4.Button16Click(Sender: TObject);

var

ACmdText:AnsiString;

T,T1,T2:DWORD;

I:Integer;

begin

if FProvider.Connected then

begin

T:=GetTickCount;

if not FProvider.OpenDataSet(FDataSet,Memo1.Lines.Text) then

ShowMessage(FProvider.LastErrorMsg);

T1:=GetTickCount-T;

T:=GetTickCount;

UniQuery1.SQL.Assign(Memo1.Lines);

UniQuery1.Active:=True;

T2:=GetTickCount-T;

ShowMessage(Format('Total records: %d '#13#10'TPgSQLProvider used time:%dms'#13#10'UniDAc used time:%dms',

[FDataSet.RecordCount,T1,T2]));

Caption:=Caption+',My:'+IntToStr(T2);

end;

ResizeGrids;

end;

此帖子包含附件:

大小:85.4K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

ww1000 (Delphis)

▲▲▲▲△

-

注册会员

2012/7/7 14:11:29

28楼:

支持啊...

不过如果测试pg..不要用unidac.相当于ado+odbc.

用 pgdac 试试

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

阳光总在

作者:

iny (盒子)

★☆☆☆☆

-

盒子活跃会员

2012/7/7 14:26:24

29楼:

希望多一些主流数据库的测试,比如mssql、oracle

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

-

作者:

★☆☆☆☆

-

盒子活跃会员

2012/7/7 15:20:54

30楼:

目前的SQLITE和PG不太够,希望楼主加一些主流的数据库:MSSQL/ORACLE/Firebird

/DB2等一些数据库支持!

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

不喧哗 自有声 心静 思远 志行千里

作者:

★☆☆☆☆

-

普通会员

2012/7/7 15:53:41

31楼:

回复28楼ww1000:

Unidac访问PG是直接在协议层实现的,而不是通过AOD+ODBC。所以速度实际上很快的了。

回复 iny (盒子)和30楼tintin1943:

实际上可以直接从TMemoryDataProvider上继承实现下来对任意数据库的支持,我的源码里提供了SQLite和PostgresSQL的支持,砖已经抛下去了,希望能引上玉来!毕竟个人精力有限,得养家,所以更多数据库的支持,只能一步步来,只不过我首先做的是支持SQLite和PostgreSQL.

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 16:16:14

32楼:

QDAC如何支持新的数据库?

QDAC要支持新的数据库,需要从TMemoryDataProvider继承一个子类实现,以系统实现的TSQLiteProvider为例子我们做个全面的说明。首先看声明:

TSQLiteProvider=class(TMemoryDataProvider)

protected

FPassword: AnsiString;

FDatabase: WideString;

FDLLPath:WideString;

FDLLHandle:THandle;

procedure DestroyHandle(AHandle:THandle);override;

function GetRecordCount(AHandle:THandle):Integer;override;

function GetFieldCount(AHandle:THandle):Integer;override;

function GetFieldDef(AHandle:THandle;AIndex:Integer;var ADef:TMDSField):Boolean;override;

function GetAffectedCount(AHandle:THandle):Integer;override;

function GetFieldData(AHandle:THandle;ARowIndex:Integer;AField:TMDSField;AVal:TRecordValue):Boolean;override;

function InternalExecute(ACmdText:WideString;ACmdTimeout:DWORD;ADataSetNeeded:Boolean):THandle;override;

procedure InternalApplyUpdates(ARootField:TMDSField;ARecords:TList);override;

procedure SetDLLPath(const Value: WideString);

procedure SetPassword(const Value: AnsiString);

procedure InternalClose;override;

procedure InternalOpen;override;

procedure ValidDLL;

procedure ValidConnection;

procedure SetLastError;

public

constructor Create(AOwner:TComponent);override;

destructor Destroy;override;

function BeginTrans(ALevel:TDatabaseIsolationLevel=dilUnspecified;ASavePointName:WideString=''):Boolean;override;

procedure CommitTrans;override;

procedure RollbackTrans(ASavePointName:WideString='');override;

published

property Database:WideString read FDatabase write FDatabase;

property DLLPath:WideString read FDLLPath write SetDLLPath;

property Password:AnsiString read FPassword write SetPassword;

end;

首先,由于系统需要加载外部的sqlite3.dll以便实现对sqlite3数据库的操作,因此,我们在这里实现了一个ValidDLL函数,来动态加载并导入sqlite3.dll中我们用到的函数。大家可以参考prov_sqlite.pas中ValidDLL的实现,如果加载动态链接库失败,我们要抛出一个异常提醒用户,缺少文件和具体的错误信息。

其次,实现一个ValidConnection函数来保证连接有效,如果连接未建立,则尝试建立连接,如果建立连接失败,抛出异常。

最后,重载实现父类要求实现的接口函数,包括:

InternalOpen - 使用当前参数尝试打开连接,如果失败,则调用SetError来设置错误信息并返回false。

InternalClose - 关闭一个已经打开的连接。

InternalExecute - 在一个已打开的连接上执行指定的脚本,如果成功,返回一个结果句柄,如果失败,调用SetError来设置错误信息并返回空句柄。

GetAffectRows - 返回脚本影响的数据行数。

GetRecordCount - 返回结果集数据的行数。

GetFieldCount - 返回结果集的字段数。

GetFieldDef - 返回结果集的某个字段的具体定义。

GetFieldData - 返回结果集的某行数据某个字段的具体取值。

DestroyHandle - 释放由InternalExecute返回的结果句柄。

如果不想支持事务,实现上面的接口就可以了,如果要支持事务和保存点,则还需要重载BeginTrans/RollbackTrans/CommitTrans,以实现相关支持。

如果想支持自动更新,还要实现InternalApplyUpdates接口,来执行实际的更新操作。

至此,一个支持TMemoryDataSet的提供者程序也就创建完成了,可以完整的支持TMemoryDataProvider要求的各项功能。

QDAC的Provider不需要支持服务器端游标,如果要实现服务器端游标的效果,可以通过后台分块取数据,然后使用TMemoryDataSet.Union函数的方式来完成。

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 16:25:31

33楼:

想测试一下UniDAC的SQLite数据库速度对比,不知道为什么总提示文件加密。先贴出自己的速度来吧,检索10000条记录,两个整数字段,用时156ms.

此帖子包含附件:

大小:32.8K

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/7 18:48:08

34楼:

Beta 1 补丁:

* 修正了SQLite提交事务和应用变更时发现的Bug

+ SQLite 3 加入数据库加密支持,TSQLiteProvider提供了Password属性(要求使用支持加密的sqlite3.dll)

下载地址:

http://vdisk.weibo.com/s/8f8X5/1341643691

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

QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):

http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外

作者:

★☆☆☆☆

-

普通会员

2012/7/8 9:35:49

35楼:

加入Patch后的版本,应该可以应付日常使用的需要,因此,将留出一段时间供大家测试提供反馈,以便改进。

后续的发布计划大概如下:

2012.7.14 Beta 2 发布

2012.7.21 Beta 3 发布

2012.7.28 RC版发布

2012.8.1 1.0正式版发布

1.0版之后,会进入下一个版本的规划设计阶段,目前考虑2.0版提供以下的功能改进:

+ 过滤表达式支持IN和NOT IN操作,实际上这个支持只需要在表达式分析阶段就可以完成,而且有替代的手段(IN可以用 a=v1 or a=v2 or a=v3这样,NOT IN 可以用a<>v1 and a<>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值