Конференция "Базы" » Работа с IbConnectionBroker [D6, FireBird 2.1]
 
  • DelphiN! (31.03.09 10:06) [0]
    Доброго времени суток!
    Возникла необходимость работать с базой 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! (31.03.09 10:12) [1]
    Не то вставил, заменить жирное, этим.

         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;
  • DelphiN! (03.04.09 12:29) [2]
    up
 
Конференция "Базы" » Работа с IbConnectionBroker [D6, FireBird 2.1]
Есть новые Нет новых   [134477   +40][b:0][p:0.001]