1

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

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

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

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

4

1 回答 1

1

TCustomADODataSet.SaveToFile方法在内部调用该RecordSet.Save方法,该方法不允许对数据的存储方式进行任何自定义。无论如何,您可以将您的 TAdoQuery 连接到提供方法的TClientDatasetSaveToFile,另一种选择是编写您自己的方法以将数据保存到 XML 文件。

于 2015-06-03T19:59:24.683 回答