0

每当 ADO (DBgo) 停产或有人想将基于 ADO-Windows 的应用程序带到 UNIX 世界时,无需重写应用程序,翻译单元单元 Data.Win.ADODB中给出的 ADO 类;到新的相应的基于 ZEOS 的分类可能会有所帮助。对于 TADOConnection,在此交换期间映射到 TZConnection 是显而易见的,对于 TADOTable、TADOQuery .....

对于尚不存在的类开始这项工作,现在需要转换此代码是使用 TADOBlobStream 类。如前所述,我想创建一个 TZEOSBLobStream 类而不是它以最大程度地减少代码重构工作

在 ZEOS 中创建兼容类的最佳方法是什么?以及如何考虑 ADO 单元中给出的其他类,例如

  • TADOCommand = 类;TCustomADODataSet = 类;TADODataSet = 类;TParameters = 类;......

    TADOCommand = 类;

    TCustomADODataSet = 类;

    TADODataSet = 类;

    TParameters = 类;

    ;

4

1 回答 1

0

您不应该使用特定的 BLOB 流实现,也不应该实现自己的。这就是库附带的内容。您应该使用通用TDataSet类提供的抽象层接口。它具有CreateBlobStream方法,该方法将特定库 BLOB 流类实现的实例作为抽象TStream类返回以与之交互。

在大多数情况下,只使用这个返回的 TStream实例就是你真正需要的。这是使用 BLOB 流的非常常见的方式,独立于使用的库。例如,在这样的代码中,MyDataSet可以是 ADO、ZEOS 或理论上任何正确实现的数据集对象:

var
  Stream: TStream;
begin
  Stream := MyDataSet.CreateBlobStream(MyDataSet.FieldByName('MyBlob'), bmReadWrite);
  try
    { ← read of write from or to the Stream here }
  finally
    Stream.Free;
  end;
end;

因此,即使在您的情况下这可能很困难,我强烈建议您重构代码以尽可能使用TDataSet类的抽象层。

于 2018-02-14T05:36:27.423 回答