[QDB] 修正过滤时表达式清理时内存泄露和CopyFrom对Blob字段的支持问题

【问题描述】 1、过滤表达式清理时,未清理 FValue 的值,造成内存泄露; 2、CopyFrom 的源是一个普通的数据集对象(非 TQDataSet 实例),如果源存在Blob字段,会抛出异常 【严重程度】 高 【更新级别】 推荐 【特别感谢】 阿木、幽灵

[QDB] 幽灵分享:QDataSet+TQMSSQLConverter 实战技巧

【注】本文由网友 幽灵 分享,由 swish 整理并重新编辑。 1、将A数据库A表的部分数据导入 B数据库B表中 【应用场景】 经常需要将A表的部分数据导入到B库的A表中,以前用循环插入 或是用数据库本身的导入导出,比较耗时,操作麻烦。 【原始做法】 循环插入 [crayon-58fe665e0c3fe98633602

[QDB] 使用 TQConverter 直接将数据流从一种格式转换为另一种格式

TQConverter 新增了SaveToConverter / LoadFromConverter 方法来简化数据流格式的转换,支持从流中和文件中转换数据格式后保存到另一个流或文件中。 下面的示例代码演示了: 将当前 FDataSet 数据集的内容使用 TQBinaryConverter 来保存到 ASourceSt

[QDB] 更新:修正了 OpenDataSet 时,如果脚本未返回结果集时未报告错误的问题

【更新说明】 调用 TQProvider.OpenDataSet ,或者是设置数据集的 CommandText,然后打开数据集时,如果指定的脚本没有返回结果集,原来的实现会打开一个没有任何字段的结果集,这实际上是一个错误,本次修改更正了此问题。在检测到这种情况时,返回失败。 【严重程序】 中 【更新级别】 可选

[QDB] 修正了 TQProvider 对多数据集的支持

【更新说明】 1、TQProvider.AddResultSet 函数在被调用时,由于没有检查条件错误,造成可能创建的结果集数量错误,比如类似下面的代码:

就会生成一个空的结果集,从而出错。 2、TQProvider.AddResultSet 函数在被调

[QDB] 更新-TQSQLConverter 新增多个属性

【更新内容】 1、新增 PrimaryKeyOnly 属性,如果为 True ,则生成的 SQL 脚本的 where 表达式中将只包含主键相关的字段。 2、新增脚本模板相关的属性: InsertTemplate 用于指定生成插入脚本时的模板,注意插入模板中,使用的是 “字段名.New” 这个宏来代表要插入的指定字段的新

[QDB] QDB 新增 TQSQLConverter 的子类来生成更新 SQL 脚本

【注】 TQSQLConverter 新增了多个属性,具体参考:[QDB] 更新-TQSQLConverter 新增多个属性 受制于个人的时间和精力,QDB 的直连的 Provider 目前进展并不如人意。那么在没有 Provider 的情况下,难道就没有办法结合 QDB 和现有的数据库组件来使用了吗?当然不是,QDB

[QDB]新增 TQTextConverter 转换器支持文本格式的数据转换

QDB 新增了一个 TQTextConverter 转换器,只是为了符合习惯,从它上面又继承了一个 TQCSVConverter,实际上,两者是完全等价的(后者直接继承自前者,没有修改任何内容)。 TQTextConverter 相比 TQConverter 新增了以下属性: ExportEncoding 规定导出文本

QDB、QString、QValue、QPlugins 更新说明

【更新内容】 * 修正了QDB、QPlugins 在 2007 无法编译的问题 + QString 增加 StrCmpW 函数(原有增加新参数并移入 interface 部分) + QValue 修正了Bcd 类型操作符在早期版本未重载而引起的编译问题 * 其它细节修改 【更新级别】 推荐 【特别感谢】 麦子仲肥、勇哥

[QDB] 一个新的原生二进制转换器,生成文件的体积最小

QDB 新实现了一个 TQBinaryConverter 做为原生的二进制格式,它的源码位于 qconverter_stds.pas 里,相比 MsgPack、Json 及 FireDAC  的二进制格式,其体积也更小,速度也更快。同样 10 万条记录,下面是几种格式的保存结果对比(均未压缩): TQBinaryCon

[QDB] QDataSet 支持主从表方式说明

QDataSet 做为 QDB 的重要组成部分,目前已经支持主从表的设定。QDataSet 的主从表支持与一般的数据集略有不同,我做了一些简化和增强处理。设定主从表第一步与一般的数据集没有什么不同,设置从表的 MasterSource 为主表的数据源( DataSource ),但接下来就有所不同了: 1、直接通过设置

[QDB] 从数据库中一次获取多个数据集

QDB 支持一个脚本同时返回多个结果,操作过程也很简单,下面是一段从 PostgreSQL 数据库取出两个不同结果集的示例代码:

这样就同时打开了两个结果集,但是,我们只传递了一个数据集对象呀?QDB 如何存的呢?实际上,每一个 TQDataSet 实例

[QDB] QDB 数据交互过程简介

QDB 的开发目前已经基本进入正轨,各项功能完成的七七八八,剩下的主要的问题在于各种转换器和数据提供者的编写工作,就是按需编码了。 现在,我们来了解一下 QDB 与数据库的交互过程,希望能对第三方开发转换器和数据提供者有一些启发作用,更好的将 QDB 应用于实际业务中。 一、数据的获取 QDB 的数据来源有两种: 通过

[QDB] FireDAC->QDB 转换过程中可能存在的问题

FireDAC <-> QDB 之间的转换器目前已经基本就绪,目前已知问题如下: 1、QDataSet 目前不支持数组类型的字段,所以,尝试转换时,相应的字段将无法完成。 2、由于 Extended 类型在 Win32 平台中,占用10个字节,而在其它平台,都等价于 Double 类型。QDB是通过目标编译

[QDB] FireDAC -> QDB 的流转换器正在开发中,目前已经能读取数据

  虽然不完善,但是一个好的开始。这个是直接从 FireDAC 的二进制格式解析生成的数据,不需要 FireDAC 相关的单元,通过 TQFDConverter 直接解析文件数据来完成。这样大家在设计手机端程序时,就可以直接用 QDataSet 代替 FireDAC 的相关组件。 要将 FireDAC 的数据

QDB – QDataSet 综合性能测试

【插入速度测试】

【追加速度测试】

【定位测试】

【排序测试】 [crayon-58fe665e0e91f91854696

[QDB]PostgreSQL 直连性能测试

QDAC.QDB 的 PostgreSQL 直连模块目前已经完成了70%左右功能的开发,所以就做了一个与其它能够连接 PostgreSQL 数据库的组件的性能对比测试,结果如下: 连接初始化的时间我没有进行统计,我们测试 QDAC、UniDAC、FireDAC 三者执行相同脚本所有的时间,以观察其相应的效率对比,为了将

[QDB] PostgreSQL 直接连接打开数据集与 UniDAC 的速度对比

【注】本对比只是一个中间结果,不代表最终稳定测试版结果。连接的是官网服务器上的演示数据库,测试代码如下:

最终的测试结果速度要快于UniDAC,下面是其中一次的测试结果,约快一倍左右。