Библиотека fblib
Модератор: Модераторы
Библиотека fblib
Кто-нибудь пользовался библиотекой fblib для доступа к Firebird?
http://fblib.altervista.org/
Какие впечатления? В сравнении с UIB, например. Какой датасет использовали для замены входящего в состав библиотеки однонаправленного read-only датасета?
http://fblib.altervista.org/
Какие впечатления? В сравнении с UIB, например. Какой датасет использовали для замены входящего в состав библиотеки однонаправленного read-only датасета?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Я пользуюсь ^_^ Устраивает всё, разве что есть некоторые проблемы при использовании одного TFBLDsql для нескольких TFBLTransaction одновременно, хотя это, наверное, делать вообще не нужно ^_^ Еще датасет односторонний, но это почти везде... И обращение к полям отлично от IBX, UIB, FIBL и подобных (вместо Fields[i].As<Type>; идет FieldAs<Type>(i);
UPD: еще, кстати, при пересборке после установке Лазарь ругается на какие-то ibase.h, но всё работает.. И из преимуществ - это при обращении FieldAsString(i) к блоб полям с подтипом TEXT возвращается искомая строка (для второго типа - идет стандартное (blob)
UPD: еще, кстати, при пересборке после установке Лазарь ругается на какие-то ibase.h, но всё работает.. И из преимуществ - это при обращении FieldAsString(i) к блоб полям с подтипом TEXT возвращается искомая строка (для второго типа - идет стандартное (blob)
vital
Увы, кругом одни джедаи...
Я тоже всегда долго копаюсь с исходниками, потому что даже если и есть какая-то документация, то она крайне убогая. Это проблема длч всех подобных разработок, потому что пока эта разработка не стала крайне популярной, никто не сядет писать доку.
А доку должен делать не разработчик, т.к. разработчику и без доки всё понятно. 
Увы, кругом одни джедаи...
Я тоже всегда долго копаюсь с исходниками, потому что даже если и есть какая-то документация, то она крайне убогая. Это проблема длч всех подобных разработок, потому что пока эта разработка не стала крайне популярной, никто не сядет писать доку.
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
А это я извращаюсь ^_^ Когда-то давно упростил, как мне кажется. работу с базой еще для IBX и теперь привык, и во всех проектах, работающих с БД, создаю класс подобный этому:
И теперь, если сделать что-нибудь вроде
То при разрушении читающей транзакции по понятным причинам вылезает Access Violation...
Код: Выделить всё
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
- Откуда: Тољя††и
- Контактная информация:
Вопрос по библиотеке fblib.
Как при старте бэкапа из компонента TFBLService выводить сообщения о текущей операции? НУ, скажем, куда-нибудь в caption...
В IBX есть TIBControlAndQueryService у которого есть функция GetNextLine.
А как быть с FBLib ???
зы. Причем сам бэкап проходит на ура - шустро и (тьфу-тьфу) без проблем.
Как при старте бэкапа из компонента TFBLService выводить сообщения о текущей операции? НУ, скажем, куда-нибудь в caption...
В IBX есть TIBControlAndQueryService у которого есть функция GetNextLine.
А как быть с FBLib ???
зы. Причем сам бэкап проходит на ура - шустро и (тьфу-тьфу) без проблем.
