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

📄 mydbmanager.~pas

📁 信息系统工作核心代码,若要具体可以联系我,这只是一部分核心代码,大家一起交流分享.谢谢
💻 ~PAS
字号:
unit MydbManager;

interface

uses
  classes,DBTables,Registry,SysUtils,windows;

type
  TMyAppDatabase=class(TDatabase)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  TDbLinkParams=record
    DatabaseName: string;
    ServerName: string;
    DbUserName: string;
    DbPassword: string;
  end;

  TDbLinkRegister=class
  private
    FRegistry: TRegistry;
  public
    constructor Create;
    destructor Destroy; override;
    function ReadRegInfo(var DbLinkParams: TDbLinkParams): Boolean;
    procedure WriteRegInfo(DbLinkParams: TDbLinkParams);
  end;

  TDatabaseManager=class
  private
    FMyAppDatabase: TMyAppDatabase;
    function GetConnected: Boolean;
  public
    constructor Create;
    destructor Destroy; override;
    procedure ConnectDB(DbLinkParams: TDbLinkParams);
    procedure DisConnect;
    property Connected: Boolean read GetConnected;
    property Database: TMyAppDatabase read FMyAppDatabase;
  end;


implementation
uses
  Un_DAO, Publics;
  
const
  appDbServerKey = MySoftKey+'\Database Server';
  DataBlobSize   = 200;
  BLOBSTOCACHE   = 100;
  Key_ServerName   ='myserv';
  Key_DataBaseName ='mydb';
  Key_DbUserName   ='myuser';
  Key_DbPassword   ='mypass';

{ TDatabaseManager }

procedure TDatabaseManager.ConnectDB(DbLinkParams: TDbLinkParams);
begin
  with FMyAppDatabase do begin
    DriverName:= 'MSSQL';
    KeepConnection:= True;
    LoginPrompt:= False;
    with Params do begin
      Clear;
      Add('DATABASE NAME='+DbLinkParams.DatabaseName);
      Add('SERVER NAME='+DbLinkParams.ServerName);
      Add('USER NAME='+DbLinkParams.DbUserName);
      Add('PASSWORD='+DbLinkParams.DbPassword);
      Add('BLOB SIZE='+IntToStr(DataBlobSize));
      Add('BLOBS TO CACHE='+IntToStr(BLOBSTOCACHE));
      Add('CANCEL QUERY=dbcanquery');
    end;
    DatabaseName:= MyAppDatabaseName;
    Connected:= True;
    Params.Clear;
  end;
end;

constructor TDatabaseManager.Create;
begin
  FMyAppDatabase:= TMyAppDatabase.Create(nil);
end;

destructor TDatabaseManager.Destroy;
begin
  FMyAppDatabase.Free;
  inherited;
end;

procedure TDatabaseManager.DisConnect;
begin
  try
    if FMyAppDatabase.Connected then
      FMyAppDatabase.Close;
  except
  end;
end;

function TDatabaseManager.GetConnected: Boolean;
begin
  Result:= FMyAppDatabase.GetConnected;
end;

{ TMyAppDatabase }

constructor TMyAppDatabase.Create(AOwner: TComponent);
begin
  inherited;
  TStringList(Params).OnChanging := nil;
end;

{ TDbLinkRegister }

constructor TDbLinkRegister.Create;
begin
  FRegistry:= TRegistry.Create;
  FRegistry.RootKey := HKEY_CURRENT_USER;
end;

destructor TDbLinkRegister.Destroy;
begin
  FRegistry.Free;
  inherited;
end;

function TDbLinkRegister.ReadRegInfo(var DbLinkParams: TDbLinkParams): Boolean;
begin
  Result:=True;
  with FRegistry do begin
    if OpenKey(appDbServerKey, False) then begin
      //Server Name
      try
        DbLinkParams.ServerName:= ReadString(Key_ServerName);
      except
      end;
      if DbLinkParams.ServerName='' then begin
        Result:=False;
        Exit;
      end;
      //DBName
      try
        DbLinkParams.DatabaseName:=ReadString(Key_DatabaseName);
      except
      end;
      if DbLinkParams.DatabaseName='' then begin
        Result:=False;
        Exit;
      end;
      //UserName
      try
         DbLinkParams.DbUserName:= ReadString(Key_DbUserName);
      except
      end;
      try
        DbLinkParams.DbPassword:= Decrypt(ReadString(Key_DbPassword));
      except
      end;
    end
    else
      result:= false;
  end;
end;

procedure TDbLinkRegister.WriteRegInfo(DbLinkParams: TDbLinkParams);
begin
  with FRegistry do begin
    OpenKey(appDbServerKey, True);
    WriteString(Key_ServerName,  DbLinkParams.ServerName);
    WriteString(Key_DataBaseName,DbLinkParams.DatabaseName);
    WriteString(Key_DbUserName,  DbLinkParams.DbUserName);
    WriteString(Key_DbPassword,  Encrypt(DbLinkParams.DbPassword));
  end;
end;

end.

⌨️ 快捷键说明

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