【问题描述】 1、过滤表达式清理时,未清理 FValue 的值,造成内存泄露; 2、CopyFrom 的源是一个普通的数据集对象(非 TQDataSet 实例),如果源存在Blob字段,会抛出异常 【严重程度】 高 【更新级别】 推荐 【特别感谢】 阿木、幽灵
分类: QDB
[QDB] 幽灵分享:QDataSet+TQMSSQLConverter 实战技巧
【注】本文由网友 幽灵 分享,由 swish 整理并重新编辑。 1、将A数据库A表的部分数据导入 B数据库B表中 【应用场景】 经常需要将A表的部分数据导入到B库的A表中,以前用循环插入 或是用数据库本身的导入导出,比较耗时,操作麻烦。 【原始做法】 循环插入 AdoQueryM.sql.text:=’select *
[QDB] 使用 TQConverter 直接将数据流从一种格式转换为另一种格式
TQConverter 新增了SaveToConverter / LoadFromConverter 方法来简化数据流格式的转换,支持从流中和文件中转换数据格式后保存到另一个流或文件中。 下面的示例代码演示了: 将当前 FDataSet 数据集的内容使用 TQBinaryConverter 来保存到 ASourceSt
[QDB] 更新:修正了 OpenDataSet 时,如果脚本未返回结果集时未报告错误的问题
【更新说明】 调用 TQProvider.OpenDataSet ,或者是设置数据集的 CommandText,然后打开数据集时,如果指定的脚本没有返回结果集,原来的实现会打开一个没有任何字段的结果集,这实际上是一个错误,本次修改更正了此问题。在检测到这种情况时,返回失败。 【严重程序】 中 【更新级别】 可选
[QDB] 修正了 TQProvider 对多数据集的支持
【更新说明】 1、TQProvider.AddResultSet 函数在被调用时,由于没有检查条件错误,造成可能创建的结果集数量错误,比如类似下面的代码: if Provider.OpenDataSet(ADataSet,’update table1 set field1=value1 where …;select
[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] 更新: 使用 OpenDataSet 从数据库中获取记录时,会设置 CommandText 属性
【更新说明】 CommandText 属性原来没有自动设置,在调用 Provider 的 OpenDataSet 方法时,现在会设置这一属性的值(虽然 QDB 本身不使用它,然并卵?) 【更新级别】 可选
[QDB] QDataSet 支持主从表方式说明
QDataSet 做为 QDB 的重要组成部分,目前已经支持主从表的设定。QDataSet 的主从表支持与一般的数据集略有不同,我做了一些简化和增强处理。设定主从表第一步与一般的数据集没有什么不同,设置从表的 MasterSource 为主表的数据源( DataSource ),但接下来就有所不同了: 1、直接通过设置
[QDB] 三驾马车已就绪,等待您的测试
QDB的三驾马车:TQDataSet、TQConverter、TQProvider 目前都已经可以工作,实际使用过程中可能会有各种Bug,所以暂时不适合用在正式项目中。 1、TQDataSet 内存数据集对象,继承自 TDataSet 并扩展了许多功能。通过使用 TQProvider 的具体子实例(如 TQPgSQLP
[QDB] 从数据库中一次获取多个数据集
QDB 支持一个脚本同时返回多个结果,操作过程也很简单,下面是一段从 PostgreSQL 数据库取出两个不同结果集的示例代码: FProv.OpenDataSet(FDataSet, ‘select id,char_d from dbtypes order by id;’+ ‘select id,abstime_d
[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 综合性能测试
【插入速度测试】 测试 QDAC.TQDataSet… 每万条用时(ms):94.6 97.2 99.4 99.3 104.3 98.7 101.3 101.5 104.4 100.3 总计用时(ms):1001.0 测试 UniDAC.TQDataSet… 每万条用时(ms):116.1 118.1 117.
[QDB]PostgreSQL 直连性能测试
QDAC.QDB 的 PostgreSQL 直连模块目前已经完成了70%左右功能的开发,所以就做了一个与其它能够连接 PostgreSQL 数据库的组件的性能对比测试,结果如下: 连接初始化的时间我没有进行统计,我们测试 QDAC、UniDAC、FireDAC 三者执行相同脚本所有的时间,以观察其相应的效率对比,为了将
[QDB] PostgreSQL 直接连接打开数据集与 UniDAC 的速度对比
【注】本对比只是一个中间结果,不代表最终稳定测试版结果。连接的是官网服务器上的演示数据库,测试代码如下: var T1, T2: Int64; I: Integer; begin FProv.ServerHost := ‘www.qdac.cc’; FProv.ServerPort := 端口号也藏掉; FProv.U