【问题标题】:Saving an Object into Database将对象保存到数据库中
【发布时间】:2020-08-06 10:36:19
【问题描述】:

我正在尝试将对象保存并加载到 BLOB 类型的数据库字段中。 这可能吗?如果是,如何?

例子:

vk.class.Offer.cls 的实例保存到DB-Table OfferHead
并从 DB-Table OfferHead 加载 vk.class.Offer.cls 类型的 objOffer

我正在尝试以下代码:

   DEFINE VARIABLE objAngebot AS CLASS vk.class.Angebot NO-UNDO.
   DEFINE VARIABLE oObj       as MemPTR                 NO-UNDO.

   DEFINE BUFFER bAngKopf FOR AngKopf.

   COPY-LOB  bAngKopf.ank_ObjHandle TO oObj.
   objAngebot = CAST(oObj, vk.class.Angebot). 

【问题讨论】:

  • 我认为您要查找的术语是 serializeSerializing classes to binary and JSON formats 中有 Progress OpenEdge 的信息。
  • 你在尝试什么不起作用?关于这些尝试出了什么问题,是否有错误消息或其他有用的线索?

标签: openedge progress-4gl progress-db


【解决方案1】:

我通过将对象写入文件并将其重新读回数据库来使其工作。

COPY-LOB FROM bAngPos.anp_ObjHandle TO FILE cPfadPos.
  objInputStream = NEW Progress.IO.FileInputStream(cPfadPos).
  objSerializer = NEW Progress.IO.BinarySerializer().
  objAngebotPos = CAST(objSerializer:Deserialize(objInputStream), vk.class.AngebotPos) NO-ERROR.
  objInputStream:Close().
  OS-DELETE VALUE(cPfadPos).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多