Копаю в сторону TIBConnectionbroker, но не могу понять как правильно организовать работу. Приложение консольное.
Приведу несколько строк из кода.
Само приложение:
program main;
{$APPTYPE CONSOLE}
uses
IBX.IBConnectionBroker,
MyThread in 'MyThread.pas';
var
Thread1, Thread2: TMyThread;
ConnectionBroker: TIBConnectionBroker;
begin
ConnectionBroker:=TIBConnectionBroker.Create(nil);
ConnectionBroker.DatabaseName:='C:\DataBase.fdb';
ConnectionBroker.Params.Clear;
ConnectionBroker.Params.Add('user_name=SYSDBA');
ConnectionBroker.Params.Add('password=masterkey');
Thread1:=TMyThread.Create(True);
Thread1.fBroker:=ConnectionBroker;
Thread1.Resume;
Thread2:=TMyThread.Create(True);
Thread2.fBroker:=ConnectionBroker;
Thread2.Resume;
end;
Модуль потока:
unite MyThread;
interface
uses
IBDatabase,
IBCustomDataSet,
IBX.IBConnectionBroker;
type
TMyThread = class(TThread)
private
fDataBase: TIBDatabase;
fTransaction: TIBTransaction;
fDataSet: TIBDataSet;
protected
procedure Execute; override;
published
fBroker: TIBConnectionBroker;
end;
implementation
procedure TMyThread.Execute;
begin
fDatabase:=fBroker.GetConnection; // Тут вылетает Exception class $C0000005 with message 'access violation at 0x0069dc06: read of address 0x00000000'
fTransaction:=TIBTransaction.Create(nil);
fTransaction.DefaultDatabase:=fDataBase;
fDataSet:=TIBDataSet.Create(nil);
fDataSet.Database:=fDataBase;
fDataSet.Transaction:=fTransaction;
end;
Сам понять это не в силах. Надеюсь на общественный интеллект.