我有一个应用程序,允许用户使用TADOQuery组件在远程数据库上运行查询。然后使用TADOQuery的SaveToFile方法将查询结果保存到XML文件中。
我最近遇到了一个问题,即如果其中一个字段中存在换行符(十六进制" 0A"),则该字段中的数据会被截断(即' s只部分保存到文件中)。字段中的空字符会导致类似的问题。
我需要做的是在调用SaveToFile方法之前扫描相关字段,并替换任何"问题"带有别的东西(例如空格)。我不允许更新数据库中的数据,因此我无法将任何更改推送回数据库(这意味着TADOQuery无法处于编辑模式)。
有没有办法实现这一点(即在运行SELECT之后但在调用SaveToFile之前编辑字段而不更改数据库中的数据)?我有一个解决方法,但它相当冗长和低效,但它允许我编辑XML文档而不触及服务器上的数据(基本上,阅读问题字段,进行更改并存储临时文件中字段的更新版本,调用SaveToFile,然后用更新的版本替换XML文档中的字段)。这是我最好的选择,还是有更好的方法?
答案 0 :(得分:1)
TCustomADODataSet.SaveToFile
方法在内部调用RecordSet.Save
方法,该方法不允许对数据的存储方式进行任何自定义。无论如何,您可以将TAdoQuery连接到提供TClientDataset方法的SaveToFile
,另一个选项是编写自己的方法将数据保存到XML文件。