utdmadodemoobject.pas

来自「Delphi开发webservice的一套例子」· PAS 代码 · 共 98 行

PAS
98
字号
unit utdmADODemoObject;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient,
  MtsRdm, Mtx, PDelphiADODemo_TLB, Provider, DB, ADODB;

type
  TADODemoServer = class(TMtsDataModule, IADODemoServer)
    adocnDemoDB: TADOConnection;
    adodsEssays: TADODataSet;
    dspEssays: TDataSetProvider;
    cdsEssays: TClientDataSet;
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
    procedure QueryData(const sSQLCommand: WideString; var sData: OleVariant);
      safecall;
    procedure UpdateData(const sData: WideString; var iErrorCount: Integer);
      safecall;
  public
    { Public declarations }
  end;

var
  ADODemoServer: TADODemoServer;

implementation

{$R *.DFM}

class procedure TADODemoServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;

procedure TADODemoServer.QueryData(const sSQLCommand: WideString;
  var sData: OleVariant);
begin
  Self.adocnDemoDB.Connected := True;
  cdsEssays.Active := False;
  try
    cdsEssays.CommandText := sSQLCommand;
    try
      cdsEssays.Active := True;
      sData := cdsEssays.XMLData;
      SetComplete;
    except
      on e: Exception do
      begin
        sData := '';
        SetAbort;
      end;
    end;
  finally // wrap up
    cdsEssays.Active := False;
    Self.adocnDemoDB.Connected := False;
  end;    // try/finally
end;

procedure TADODemoServer.UpdateData(const sData: WideString;
  var iErrorCount: Integer);
begin
  cdsEssays.Active := False;
  try
    cdsEssays.XMLData := sData;
    try
      cdsEssays.Active := True;
      iErrorCount := cdsEssays.ApplyUpdates(0);
      SetComplete;
    except
      on e: Exception do
        SetAbort;
    end;
  finally // wrap up
    cdsEssays.Active := False;
  end;    // try/finally
end;

initialization
  TComponentFactory.Create(ComServer, TADODemoServer,
    Class_ADODemoServer, ciMultiInstance, tmBoth);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?