📄 mydbmanager.~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 + -