udatabasepublic.~pas

来自「用DELPH写的DAO访问模块.有连接池.应用了各种模块,把数据库操作」· ~PAS 代码 · 共 198 行

~PAS
198
字号
{*******************************************************}
{                                                       }
{       定义数据库系统公共类型                          }
{                                                       }
{       版权所有 (C) 2009 大道网络                      }
{                                                       }
{*******************************************************}

unit uDatabasePublic;

interface

uses
  Classes, SysUtils, StrUtils, IniFiles, ResourceStrUnit;


type

//==============================================================================
// 数据库类型定义
//==============================================================================
  TDBKind = (dbMSSQL, dbORACLE, dbACCESS, dbMYSQL);


//==============================================================================
// 数据库配置参数:
//==============================================================================
  PConnDBParam = ^TConnDBParam;
  TConnDBParam = record
    fConnDBKind  : TDBKind;
    fConfigDB    : String;
    fServerName  : String;
    fDBName      : String;
    fConnStr     : String;
    fUser        : String;
    fPassword    : String;
  end;


//==============================================================================
// 数据库配置参数类
// 通过该数据库参数类读取数据库配置基本信息
//==============================================================================

  TDBConfig = class(TPersistent)
  private
    fConnDBParam :TConnDBParam;
    procedure setDBKind(tmpConnDBKind: TDBKind);
    function getDBKind: TDBKind;
    procedure setServerName(pServerName :String);
    function getServerName: String;
    procedure setDBName(pDBName :String);
    function getDBName: String;
    procedure setConnStr(pConnStr :String);
    function getConnStr: String;
    procedure setUser(pUser :String);
    function getUser: String;
    procedure setPwd(pPwd :String);
    function getPwd: String;    
  public
    constructor Create;
    function setConnectionStr(const pIniFile: string): Boolean;
  published
    property DBKind: TDBKind read getDBKind write setDBKind;
    property ServerName: String read getServerName write setServerName;
    property DBName: String read getDBName write setDBName;
    property ConnStr: String read getConnStr write setConnStr;
    property User: String read getUser write setUser;
    property Password: String read getPwd write setPwd;
  end;

const
  Db_Key = '#@D1&82X%)#@@#@$iiLE~!jkllk$#%';    //数据库加密字符串


implementation

constructor TDBConfig.Create;
begin
  inherited Create;
end;

procedure TDBConfig.setDBKind(tmpConnDBKind: TDBKind);
begin
  fConnDBParam.fConnDBKind := tmpConnDBKind;
end;

function TDBConfig.getDBKind: TDBKind;
begin
  Result := fConnDBParam.fConnDBKind;
end;

procedure TDBConfig.setServerName(pServerName :String);
begin
  fConnDBParam.fServerName := pServerName;
end;

function TDBConfig.getServerName: String;
begin
  Result := fConnDBParam.fServerName;
end;

procedure TDBConfig.setDBName(pDBName :String);
begin
  fConnDBParam.fDBName := pDBName;
end;

function TDBConfig.getDBName: String;
begin
  Result := fConnDBParam.fDBName;
end;

procedure TDBConfig.setConnStr(pConnStr :String);
begin
  fConnDBParam.fConnStr := pConnStr;
end;

function TDBConfig.getConnStr: String;
begin
  Result := fConnDBParam.fConnStr
end;

procedure TDBConfig.setUser(pUser :String);
begin
  fConnDBParam.fUser := pUser;
end;

function TDBConfig.getUser: String;
begin
  Result := fConnDBParam.fUser;
end;

procedure TDBConfig.setPwd(pPwd :String);
begin
  fConnDBParam.fPassword := pPwd;
end;

function TDBConfig.getPwd: String;
begin
  Result := fConnDBParam.fPassword;
end;

function TDBConfig.setConnectionStr(const pIniFile: string): Boolean;
var
  IniFile: TIniFile;
begin
  IniFile := TIniFile.Create(pIniFile);
  try
    try
      //读取数据库配置方式
      with fConnDBParam do
      begin
        fConfigDB := IniFile.ReadString('Define','dbConnDef', '');
        fConfigDB := uppercase(fConfigDB);

        if UpperCase(fConfigDB)= 'MSSQL' then
        begin
          fConnDBKind  := dbMSSQL;
          ServerName := IniFile.ReadString('MSSQL', 'ServerName', '');
          DBName     := IniFile.ReadString('MSSQL', 'DatabaseName', '');
          User       := IniFile.ReadString('MSSQL', 'UserName', '');
          Password   := IniFile.ReadString('MSSQL', 'Password', '');
        end
        else
        if UpperCase(fConfigDB)= 'ORACLE' then
        begin
          fConnDBKind := dbORACLE;
          ServerName := IniFile.ReadString('ORACLE', 'ServerName', '');
          DBName     := IniFile.ReadString('ORACLE', 'DatabaseName', '');
          User       := IniFile.ReadString('ORACLE', 'UserName', '');
          Password   := IniFile.ReadString('ORACLE', 'Password', '');
        end
        else
        if UpperCase(fConfigDB)= 'ACCESS' then
        begin
          fConnDBKind  := dbACCESS;
          DBName     := IniFile.ReadString('ACCESS', 'DatabasePath', '');
          User       := IniFile.ReadString('ACCESS', 'UserName', '');
        end;
      
        //解密字符串,
        //此处要用加密类处理
        //pPwd := DecodeStr(pPwd,s_Key);
        if fConnDBKind in [dbMSSQL, dbORACLE, dbACCESS, dbMYSQL] then
          Result := true
        else
          Result := false;
      end;
    except
      Result := false;
    end;
  finally
    FreeAndNil(IniFile);
  end;
end;

end.

⌨️ 快捷键说明

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