首页 > 解决方案 > 如何避免解析从数据库中获取的数据以动态创建表单?

问题描述

我的应用程序对存储在 Oracle 数据库的 CLOB 列中的 XML 进行反序列化,以动态创建表单。这种方法允许相对容易的更新部署,但是当用户使用例如3G网络通过VPN连接时速度太慢。

我想知道有没有办法将这些对象(表单)存储在用户的文件系统上,这样就不需要解析了?

我没有要显示的任何代码,但我希望这个问题的范围足够窄,可以接受。

标签: delphi

解决方案


我的建议:

  1. 确保您的表单以二进制形式保存到数据库中,而不是作为文本表示。

  2. 在您的客户端应用程序中,从数据库请求 CLOB 列数据并将其保存到 TMemoryStream。然后,您可以通过从 TMemoryStream 加载它来实例化表单,它不需要靠近客户端的文件系统。这样,就不需要从数据库中解析表单数据。

此 q的公认答案显示了如何从内存流中读取表单 - 请参阅对MemStream.ReadComponentet seq 的调用。显然,在那个 q 中使用 tje 方法,CLOB 数据应该是使用它的内存流步骤创建的SaveComponentToFile


推荐阅读