delphi - 如何避免解析从数据库中获取的数据以动态创建表单?
问题描述
我的应用程序对存储在 Oracle 数据库的 CLOB 列中的 XML 进行反序列化,以动态创建表单。这种方法允许相对容易的更新部署,但是当用户使用例如3G网络通过VPN连接时速度太慢。
我想知道有没有办法将这些对象(表单)存储在用户的文件系统上,这样就不需要解析了?
我没有要显示的任何代码,但我希望这个问题的范围足够窄,可以接受。
解决方案
我的建议:
确保您的表单以二进制形式保存到数据库中,而不是作为文本表示。
在您的客户端应用程序中,从数据库请求 CLOB 列数据并将其保存到 TMemoryStream。然后,您可以通过从 TMemoryStream 加载它来实例化表单,它不需要靠近客户端的文件系统。这样,就不需要从数据库中解析表单数据。
此 q的公认答案显示了如何从内存流中读取表单 - 请参阅对MemStream.ReadComponent
et seq 的调用。显然,在那个 q 中使用 tje 方法,CLOB 数据应该是使用它的内存流步骤创建的SaveComponentToFile
。
推荐阅读
- arrays - MongoDB:使用数组进行聚合
- ms-access - 将列表框中的选定项目与单选按钮相结合保存到新字段中
- javascript - jQuery 不在 Primefaces 视图中执行?
- java - 比较两个文本时如何找到不相似的行
- c++ - 如何访问一行 C++ 字符矩阵?
- angular - 向 Angular 材质禁用字段添加验证
- algorithm - Fence - 波兰信息学奥林匹克竞赛的任务
- websphere - IBM Edge 组件执行器在运行时出错
- python - 按月份过滤 DateTimeField,没有 USE_TZ 为 False
- angular - skipLocationChange 在 angular5 中不起作用