⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitdatacontroller.pas

📁 简单封装数据库表的类的一个简单的例子: http://www.delphifans.com/SoftView/SoftView_1476.html
💻 PAS
字号:
unit UnitDataController;

interface

uses
  classes, ADODB, SysUtils, DB ,
  {$ifdef CodeSite}
  CSIntf,
  {$endif}  // CodeSite
  UnitDataInterface;

type

  TDataController = class(TBaseController)
  private
    function AsADOConnection: TADOConnection;
  protected
//    procedure InitializeObject;
    procedure CreateConnection; override;
    procedure SetConnectString(const Value: string); override;
  public
    constructor Create(AOwner: TComponent; AConnect: string);
//    destructor Destroy; override;
//    constructor Create(AOwner: TComponent; AConnect: string); reintroduce;
//    destructor Destroy; override;
//    procedure CloseConnection;
    function CreateCommand(AText: string; AType: TCommandType): TBaseCommand; override;
//    function IsAccessDB: Boolean;
//    function OpenConnection: Boolean;
    function InTransaction: Boolean; override;
    function BeginTrans: integer; override;
    procedure CommitTrans; override;
    procedure RollbackTrans; override;
    function Execute(ASQL: string): Boolean; override;
  published
//    property Connected: Boolean read GetConnected;
//    property Connection: TADOConnection read GetConnection;
//    function CreateCommand(AText: string; AType: TCommandType): TBaseCommand;
//    property ConnectString: string read FConnect write SetConnectString;
  end;
  

implementation


uses UnitAppLogger, UnitDataCommand;


{ TDataController }

{
******************************* TDataController ********************************
}
//
constructor TDataController.Create(AOwner: TComponent; AConnect: string);
begin
  {$ifdef CodeSite}
  CodeSite.EnterMethod('TDataController.Create');
  CodeSite.SendMsg(AConnect);
  {$endif}  // CodeSite
  inherited Create(AOwner, AConnect);
//  FConnect := AConnect;
//  CreateConnection;
  {$ifdef CodeSite}
  CodeSite.ExitMethod('TDataController.Create');
  {$endif}  // CodeSite
end;
//
//destructor TDataController.Destroy;
//begin
//  CloseConnection;
//  inherited;
//  {$ifdef CodeSite}
//  CodeSite.SendMsg('TDataController.Destroy');
//  {$endif}  // CodeSite
//end;
//
//procedure TDataController.CloseConnection;
//begin
//  if (FConnection <> nil) and FConnection.Connected then
//  begin
//    FConnection.Close;
//  end;
//end;
//
function TDataController.CreateCommand(AText: string; AType: TCommandType):
        TBaseCommand;
begin
  //  {$ifdef CodeSite}
  //  CodeSite.EnterMethod('TDataController.CreateCommand');
  ////  CodeSite.SendFmtMsg('TDataController.CreateCommand:Text=[%s],Type=%d',
  ////    [AText, Ord(AType)]);
  //  {$endif}  // CodeSite
  result := TDataCommand.Create(Self, Self, AText, AType);// Self);
//  with (result as TDataCommand) do
//  begin
//    CommandType := AType;
//    CommandText := AText;
//  end;
  //  {$ifdef CodeSite}
  //  CodeSite.ExitMethod('TDataController.CreateCommand');
  //  {$endif}  // CodeSite
end;

procedure TDataController.CreateConnection;
begin
  {$ifdef CodeSite}
  CodeSite.EnterMethod('TDataController.CreateConnection');
  {$endif}  // CodeSite
  Connection := TADOConnection.Create(Self);
  with TADOConnection(Connection) do
  begin
    ConnectionString := FConnect;
    LoginPrompt := False;
  end;
  {$ifdef CodeSite}
  CodeSite.SendMsg(FConnect);
  CodeSite.ExitMethod('TDataController.CreateConnection');
  {$endif}  // CodeSite
end;

//function TDataController.GetConnected: Boolean;
//begin
//  result := FConnection.Connected;
//end;
//
//procedure TDataController.InitializeObject;
//begin
//  CreateConnection;
//end;
//
//function TDataController.IsAccessDB: Boolean;
//  
//  const
//    JetProvider = 'Microsoft.Jet.OLEDB';
//  
//begin
//  result := (AnsiPos(JetProvider, ConnectString) > 0);
//end;
//
//function TDataController.OpenConnection: Boolean;
//begin
//  if FConnection = nil then
//    CreateConnection;
//  result := FConnection.Connected;
//  if result then Exit;
//  try
//  //    CloseConnection;
//    FConnection.Open;
//    result := FConnection.Connected;
//  except
//    on e: Exception do
//    begin
//      FConnection.Close;
//      AppLogger.AddLog(Self, 'TDataController.OpenConnection: %s', [E.Message]);
//      raise;
//    end;
//  end;    // try/except
//end;

procedure TDataController.SetConnectString(const Value: string);
begin
//  if FConnect <> Value then
//  begin
//    FConnect := Value;
//    if FConnection.Connected then
//      FConnection.Close;
//    FConnection.ConnectionString := FConnect;
//  end;
  inherited SetConnectString(Value);
  (Connection  as TADOConnection).ConnectionString := Value;
end;

//function TDataController.GetConnection: TADOConnection;
//begin
//  if FConnection = nil then
//    CreateConnection;
//  result := FConnection as TADOConnection;
//end;

//procedure TDataController.SetConnection(const Value: TADOConnection);
//begin
//  FADOConnection := Value;
//end;

function TDataController.BeginTrans: integer;
begin
  result := AsADOConnection.BeginTrans;
end;

procedure TDataController.CommitTrans;
begin
  if InTransaction then
    AsADOConnection.CommitTrans;

end;

function TDataController.InTransaction: Boolean;
begin
  result := AsADOConnection.InTransaction;
end;

procedure TDataController.RollbackTrans;
begin
  AsADOConnection.RollbackTrans;
end;

function TDataController.AsADOConnection: TADOConnection;
begin
  result := Connection as TADOConnection;
end;

function TDataController.Execute(ASQL: string): Boolean;
begin
  try
    // statements to try
    AsADOConnection.Execute(ASQL);
    result := True;
  except
    on e: Exception do
    begin
      AppLogger.AddLog(Self, 'Execute: %s', [E.Message]);
      {$ifdef CodeSite}
      CodeSite.SendMsg(ASQL);
      {$endif}  // CodeSite
      raise;
    end;
  end;    // try/except
end;

end.

⌨️ 快捷键说明

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