![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с IbConnectionBroker [D6, FireBird 2.1]
DelphiN! © (2009-03-31 10:06:00)Доброго времени суток!
Возникла необходимость работать с базой FireBird 2.1 в отдельном потоке, решил использовать компонент IbConnectionBroker, примеров использования данного компонента кроме одного простого не нашел, использую его в отдельном потоке следующим образом :
for i := 0 to frmSettings.GridClubBases.RowCount-1 do
begin
RemouteDataSet.Close;
if RemouteDataBase <> nil then
begin
RemouteDataBase.Close;
RemouteDataBase.
RemouteDataBase.Free;
RemouteDataBase := nil;
Sleep(2000);
end;
try
RemouteBroker.ReleaseConnection(RemouteDataBase);
RemouteBroker.DatabaseName := frmSettings.GridClubBases.Cells[1,i];
RemouteBroker.Params.Text := 'user_name=SYSDBA';
RemouteBroker.Params.Add('password='+DBAPass);
RemouteBroker.Init;
//RemouteBroker.AvailableConnections
Sleep(2000);
RemouteDataBase := RemouteBroker.GetConnection;
except
Continue;
end;
RemouteDataBase.LoginPrompt := false;
RemouteDataSet.Database := RemouteDataBase;
RemouteDataSet.Transaction := RemouteDataBase.DefaultTransaction;
//******************************
RemouteDataSet.SelectSQL.Text := 'SELECT * FROM USERS WHERE LOGIN_ = '''+Login+'''';
RemouteDataSet.Open;
while (not RemouteDataSet.Eof) do
begin
...
RemouteDataSet.Next;
end;
end;
В цикле перебирается множество баз, в которых производится поиск необходимых данных. Однако компонент IbConnectionBroker соединяется с 1ой базой, но не отсоединяется от нее и во всех итерациях цикла работает с 1ой базой.
Как правильно сменить базу данных?
DelphiN! (2009-04-03 12:29:00) [1]up
DelphiN! (2009-03-31 10:12:00) [2]Не то вставил, заменить жирное, этим.
if RemouteDataBase <> nil then
begin
RemouteBroker.ReleaseConnection(RemouteDataBase);
RemouteDataBase.Close;
RemouteDataBase.Free;
RemouteDataBase := nil;
Sleep(2000);
end;
try
RemouteBroker.DatabaseName := frmSettings.GridClubBases.Cells[1,i];
RemouteBroker.Params.Text := 'user_name=SYSDBA';
RemouteBroker.Params.Add('password='+DBAPass);
RemouteBroker.Init;
Sleep(2000);
RemouteDataBase := RemouteBroker.GetConnection;
except
Continue;
end;