📄 udatabasepool.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 + -