есть такой класс для подключения к Firebird.
Код:
unit DatabaseConnUnit;
interface
uses
SysUtils,FIBDatabase, pFIBDatabase,Classes;
Type
TDatadaseConnect = class(TObject)
Private // закрытая часть
path: String;
uname: String;
upass: String;
urole: String;
db: TpFIBDatabase;
Protected // Защищенная часть
Procedure Setdbpath(Val: String);
Procedure SetUser(Val: String);
Procedure SetPassword(Val: String);
Procedure SetRole(Val: String);
Procedure SetDatabase(Val: TpFIBDatabase);
Public
Constructor Create(DataBase: TpFIBDatabase; dbpath:String; name:String; pass:String; role:String);
Destructor Destroy;
Property DataBase: TpFIBDatabase write SetDatabase;
Property dbpath: String write Setdbpath;
Property username: String write SetUser;
Property Password: String write SetPassword;
Property Role: String write SetRole;
function Login:boolean;
end;
implementation
constructor TDatadaseConnect.Create(DataBase: TpFIBDatabase;dbpath:String; name:String; pass:String; role:String);
begin
SetDatabase(DataBase);
SetUser(name);
Setdbpath(dbpath);
SetPassword(pass);
SetRole(role);
end;
destructor TDatadaseConnect.Destroy;
begin
//db.Connected:=false;
inherited;
end;
function TDatadaseConnect.Login: boolean;
begin
if db.Connected then db.Connected := False;
with db.ConnectParams do begin
UserName := uname;
Password := upass;
RoleName := urole;
end;
db.DBName := path;
try db.Connected := True;
except
on e: Exception do
//ShowMessage(e.Message);
end;
Result := db.Connected;
end;
procedure TDatadaseConnect.SetDatabase(Val: TpFIBDatabase);
begin
db:=Val;
end;
procedure TDatadaseConnect.Setdbpath(Val: String);
begin
path:=Val;
end;
procedure TDatadaseConnect.SetPassword(Val: String);
begin
upass:=Val;
end;
procedure TDatadaseConnect.SetRole(Val: String);
begin
urole:=Val;
end;
procedure TDatadaseConnect.SetUser(Val: String);
begin
uname:=Val;
end;
end.
вот тут его использую
Код:
procedure TLogForm.Button1Click(Sender: TObject);
var
c:TDatadaseConnect;
begin
c.Create(dm.Database,'c:\TMProm\bd\TMPROM.FDB','SYSDBA','masterkey','');
if c.Login then
begin
dm.SetGroupNomen.Active:=true;
mainform.Show;
close;
end
else
application.Terminate;
end;
то работает, то нет
вот ошибка
Access violationat address 0040452E in module..
Что не правильно в классе?