|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi 2009 свой класс подключения
есть такой класс для подключения к 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.. Что не правильно в классе? |
#2
|
||||
|
||||
TDatadaseConnect
1. Это не опечатка? 2. Вы описали db: TpFIBDatabase, а создаете где? По логике в вашем констукторе надо писать, что-то типа: Код:
db := TpFIBDatabase.Create(Self); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 06.11.2010 в 12:05. |
#3
|
|||
|
|||
Да скорее всего в этом и проблема. Спасибо.
|