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

📄 udatabasepool.pas

📁 数据库连接池。很重要很好的参考例子。全部源码
💻 PAS
字号:
unit uDataBasePool;

interface

uses
  Windows, Classes, SysUtils, DB, ADODB, uDIChatProctol, uCriticalSection,
  uADOConnectionPool;

type
  TDataBasePool = Class
  private
    ADOConnectionPool: TADOConnectionPool;
  private
    procedure ConfigDBConPool;
  public
    procedure SetMaxDBConn(value: WORD);
    function GetDataSet(sSQL: String): TADODataSet;
    function ExecSQL(sSQL: String): Boolean;
  public
    constructor Create;
    destructor Destroy; override;
  end;

implementation
  
constructor TDataBasePool.Create;
begin
  inherited Create;
  ADOConnectionPool := TADOConnectionPool.Create(nil);
  ConfigDBConPool;
end;

destructor TDataBasePool.Destroy;
begin
  FreeAndNil(ADOConnectionPool);
  inherited Destroy;
end;

procedure TDataBasePool.SetMaxDBConn(value: WORD);
begin
  ADOConnectionPool.MaxConnections := value;
end;

procedure TDataBasePool.ConfigDBConPool;
begin
  ADOConnectionPool.ConnectionString :='FILE NAME='+ExtractFilePath(Paramstr(0))+'server.udl';
end;

function TDataBasePool.GetDataSet(sSQL: String): TADODataSet;
var
  Connection: TCustomConnection;
begin
  Result := TADODataSet.Create(nil);
  Connection := ADOConnectionPool.GetConnection;
  Result.Connection := TADOConnection(Connection);

  try
    Result.CommandText := sSQL;
    Result.Prepared := TRUE;
    Result.Open;
    ADOConnectionPool.FreeConnection(Connection);
  except
    on E: Exception do
    begin
      ADOConnectionPool.FreeConnection(Connection);
      Result.Close;
      FreeAndNil(Result);
      Result := nil;
    end;
  end;
end;

function TDataBasePool.ExecSQL(sSQL: String): Boolean;
var
  Connection: TCustomConnection;
  FQuery: TADOQuery;
begin
  FQuery := TADOQuery.Create(nil);
  Connection := ADOConnectionPool.GetConnection;
  FQuery.Connection := TADOConnection(Connection);

  try
    FQuery.SQL.Text := sSQL;
    FQuery.ExecSQL;
    Result := TRUE;
    ADOConnectionPool.FreeConnection(Connection);
  except
    on E: Exception do
    begin
      ADOConnectionPool.FreeConnection(Connection);
      FQuery.Close;
      FreeAndNil(FQuery);
      Result := FALSE;
    end;
  end;
end;


end.

⌨️ 快捷键说明

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