Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо