Delphi TADOQuery:在 SavetoFile 之前格式化数据

Delphi TADOQuery: Format data before SavetoFile

我有一个应用程序允许用户使用 TADOQuery 组件 运行 查询远程数据库。然后使用 TADOQuery 的 SaveToFile 方法将查询结果保存到 XML 文件。

我最近 运行 遇到一个问题,如果其中一个字段中存在换行符(十六进制“0A”),则该字段中的数据将被 t运行 分类(即它仅部分保存到文件中)。字段中的空字符会导致类似的问题。

我需要做的是在调用 SaveToFile 方法之前扫描有问题的字段,并将任何 "problem" 字符替换为其他内容(例如 space)。但是我不允许更新数据库中的数据,所以我不能将任何更改推送回数据库(这意味着 TADOQuery 不能处于编辑模式)。

有什么方法可以实现这一点(即编辑字段而不更改数据库中的数据,在 运行 宁 SELECT 之后但在调用 SaveToFile 之前)?我有一个解决方法,但它相当冗长且效率低下,但它允许我编辑 XML 文档而不触及服务器上的数据(基本上,阅读问题字段,进行更改并存储临时文件中字段的更新版本,调用 SaveToFile,然后用更新版本替换 XML 文档中的字段)。这是我最好的选择,还是有更好的方法?

TCustomADODataSet.SaveToFile方法内部调用RecordSet.Save method which not allow any customization in the way how the data is stored. Anyway you can connect your TAdoQuery to an TClientDataset which provides a SaveToFile方法,另一种选择是编写自己的方法将数据保存到XML文件。