Библиотека fblib

Модератор: Модераторы

Ответить
vital
новенький
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Библиотека fblib

Сообщение vital »

Кто-нибудь пользовался библиотекой fblib для доступа к Firebird?
http://fblib.altervista.org/
Какие впечатления? В сравнении с UIB, например. Какой датасет использовали для замены входящего в состав библиотеки однонаправленного read-only датасета?
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Что не устраивает в UIB и FBDataSet?
vital
новенький
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Сообщение vital »

alexs писал(а):Что не устраивает в UIB и FBDataSet?


Пока всё устраивает. Интересуюсь в целях расширения кругозора :lol: Мало-ли, может пригодится когда.
Аватара пользователя
*vmr
постоялец
Сообщения: 168
Зарегистрирован: 08.01.2007 00:46:07
Откуда: Киев
Контактная информация:

Сообщение *vmr »

Интересная либа... правда последнее обновление годичной давности настораживает - а не заброшен ли проект?
vital
новенький
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Сообщение vital »

*vmr писал(а):Интересная либа... правда последнее обновление годичной давности настораживает - а не заброшен ли проект?


Ну, UIB тоже не первой свежести :lol: - примерно той же давности.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Я пользуюсь ^_^ Устраивает всё, разве что есть некоторые проблемы при использовании одного TFBLDsql для нескольких TFBLTransaction одновременно, хотя это, наверное, делать вообще не нужно ^_^ Еще датасет односторонний, но это почти везде... И обращение к полям отлично от IBX, UIB, FIBL и подобных (вместо Fields[i].As<Type>; идет FieldAs<Type>(i);

UPD: еще, кстати, при пересборке после установке Лазарь ругается на какие-то ibase.h, но всё работает.. И из преимуществ - это при обращении FieldAsString(i) к блоб полям с подтипом TEXT возвращается искомая строка (для второго типа - идет стандартное (blob)
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

vital писал(а):Ну, UIB тоже не первой свежести :lol: - примерно той же давности.

Вот тут Вы не правы. Версия 2.1 выложена 28 апреля этого года.
О FBDataSet я и не говорю.
vital
новенький
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Сообщение vital »

m_guest писал(а):
vital писал(а):Ну, UIB тоже не первой свежести :lol: - примерно той же давности.

Вот тут Вы не правы. Версия 2.1 выложена 28 апреля этого года.
О FBDataSet я и не говорю.


Прошу прощения, наврал: глянул в историю изменений - это версия 2.0 датирована мартом 2005-го.
vital
новенький
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Сообщение vital »

Кстати, есть ли какая-нибудь минимальная дока по UIB? Глянул хелп по jedi-vcl 3.30 - раздел по UIB там "under construction" :lol: Вон, в fblib хоть через PasDoc хоть что-то нагенерили.

P.S. Я в курсе, что настоящему джедаю нужны только исходники :lol: , но хочется хоть какой-то системности изложения :wink:
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

vital
Увы, кругом одни джедаи... :)
Я тоже всегда долго копаюсь с исходниками, потому что даже если и есть какая-то документация, то она крайне убогая. Это проблема длч всех подобных разработок, потому что пока эта разработка не стала крайне популярной, никто не сядет писать доку. :) А доку должен делать не разработчик, т.к. разработчику и без доки всё понятно. :)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Brainenjii писал(а):... использовании одного TFBLDsql для нескольких TFBLTransaction одновременно...

Ого! А зачем это, если не секрет? :)
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

А это я извращаюсь ^_^ Когда-то давно упростил, как мне кажется. работу с базой еще для IBX и теперь привык, и во всех проектах, работающих с БД, создаю класс подобный этому:

Код: Выделить всё

BLocalQuery = class(TFBLDsql)
  Private
    Updates: TStringList;
  Public
    Function FieldAsString(const AFieldIdx: Integer): String;
    Function Get(CommandText: String): Boolean;
    Procedure Post(CommandText: String);
    Function Go: Boolean;
    Procedure GetConnectionData;
    Constructor Build;
    Destructor Destroy; override;
End;
...
Function BLocalQuery.Get(CommandText:String): Boolean;
Begin
  Result := FALSE;
  {$IFDEF linux}
    CommandText := UTF8ToWin1251(CommandText);
  {$ENDIF}
  Transaction := LocalReadTransaction;
  SQL.Text := CommandText;
  Try
    ExecSQL;
  Except On E: Exception Do
    Begin
      ShowMessage(E.Message);
      Exit;
    End;
  End;
  Result := TRUE;
End;

Procedure BLocalQuery.Post(CommandText:String);
Begin
  {$IFDEF linux}
    CommandText := Bj_UTF8ToWin1251(CommandText);
  {$ENDIF}
  Updates.Add(CommandText);
End;

Function BLocalQuery.Go: Boolean;
var
  i: Integer;
Begin
  Result := FALSE;
  Transaction := LocalWriteTransaction;
  Transaction.StartTransaction;
  For i := 0 To Updates.Count - 1 Do
    Begin
      SQL.Text := Updates[i];
      Try
        ExecSQL;
      Except On E: Exception Do
        Begin
          ShowMessage(E.Message);
          Transaction.Rollback;
          Updates.Clear;
          Exit;
        End;
      End;
    End;
  Transaction.Commit;
  Updates.Clear;
  Result := TRUE;
End;

И теперь, если сделать что-нибудь вроде

Код: Выделить всё

Procedure TMainForm.ToolButton8Click(Sender: TObject);
Var
  Query: BLocalQuery;
Begin
  Query := BLocalQuery.Build;
  Query.Get('SELECT CAPTION FROM REFERENCES_INDEX WHERE ID = 1');
  Query.Post('UPDATE REFERENCES_INDEX SET CAPTION = ' + #39 + Query.FieldAsString(0) + #39 + ' WHERE ID = 1');
  Query.Go;
  Query.Free;
  LocalReadTransaction.Free;
end;

То при разрушении читающей транзакции по понятным причинам вылезает Access Violation...
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Вопрос по библиотеке fblib.
Как при старте бэкапа из компонента TFBLService выводить сообщения о текущей операции? НУ, скажем, куда-нибудь в caption...
В IBX есть TIBControlAndQueryService у которого есть функция GetNextLine.
А как быть с FBLib ???

зы. Причем сам бэкап проходит на ура - шустро и (тьфу-тьфу) без проблем.
Ответить