Lazarus + Firebird

Вопросы программирования и использования среды Lazarus.

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

Ответить
lordgray
новенький
Сообщения: 66
Зарегистрирован: 10.10.2010 00:19:11

Сообщение lordgray »

Максим писал(а):Гугол рулит. Ищущий да обрящет. :mrgreen:

Ну а причем тут ZEOS? Ну видел я эти компоненты. Никогда они мне не нравились, но дело не в этом. В общем понятно, помощи ждать неоткого :(
Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

lordgray писал(а):Ну а причем тут ZEOS?

А, ну да, лоханулся я. Меня сбило то, что народ активно ZEOS обсуждал. :P

Судя по тому же Гуголу, автором FIBL является Сергей Смирнов. Можете попытаться отправить ему личное сообщение. На форуме он под одноимённым ником.
lordgray
новенький
Сообщения: 66
Зарегистрирован: 10.10.2010 00:19:11

Сообщение lordgray »

Во, эт уже что-то, Спасибо!
qubasesx
новенький
Сообщения: 16
Зарегистрирован: 06.03.2011 23:15:34
Откуда: Орехово-Зуево

Сообщение qubasesx »

Люди, подскажите в чём я не прав.
Нужно элементарное - добавить запись в таблицу. Чегой-то у меня не получается.
БД - FireBird, вот ссылка на мою, может она касячная? http://www.onlinedisk.ru/file/633505/
Поставил на форму:
IBConnection, указал :
DatabaseName - C:\1\FIREBASE.FDB
UserName - SYSDBA
Password - masterkey

SQLTranzaction
DataBase - IBConnection

SQLQuery
DataBase - IBConnection
SQL - SELECT * FROM Oborydovanie

Подцепил к этому DBGrid.

Теперь пробую добавить в таблицу данные, а они добавляются в кэш, а в саму таблицу не сохраняются. Пробовал такие варианты:

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

procedure TForm1.Button3Click(Sender: TObject);
begin
  SQLQuery1.Append;
  SQLQuery1.FieldByName('Naimenovanie').AsInteger := 9;
  SQLQuery1.FieldByName('Model').AsInteger := 5;
  SQLQuery1.Post;
  SQLQuery1.ApplyUpdates;
  SQLQuery1.Close;
  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Text := 'SELECT * FROM OBORYDOVANIE';
  SQLQuery1.Open;
end;


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

procedure TForm1.Button4Click(Sender: TObject);
begin
  SQLQuery1.Close;
  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Add('INSERT INTO Oborydovanie');
  SQLQuery1.SQL.Add('VALUES (1, 2)');
  SQLQuery1.ExecSQL;
  SQLQuery1.Close;
  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Text := 'SELECT * FROM OBORYDOVANIE';
  SQLQuery1.Open;
end;


Ни один не работает, в таблице ничего не сохраняется. Может я базу не правильно сделал?
Последний раз редактировалось qubasesx 26.03.2011 00:16:27, всего редактировалось 1 раз.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

во-первых, оформите код при помощи тега [code]
во-вторых, используйте компонент TSQLTransaction
qubasesx
новенький
Сообщения: 16
Зарегистрирован: 06.03.2011 23:15:34
Откуда: Орехово-Зуево

Сообщение qubasesx »

Padre_Mortius писал(а):во-первых, оформите код при помощи тега [code]
во-вторых, используйте компонент TSQLTransaction


Каким образом?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

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

program CreateTable;

var AConnection : TSQLConnection;
    ATransaction : TSQLTransaction;

procedure CreateTransaction;
begin
  ATransaction := TSQLTransaction.Create;
  ATransaction.Database := AConnection;
end;

begin
  CreateConnection;
  CreateTransaction;
  AConnection.Transaction := ATransaction;
  AConnection.Open;
  ATransaction.StartTransaction;
  AConnection.ExecuteDirect('create table TBLNAMES (ID integer, NAME varchar(40));');
 
  // Some database-server types need a commit before you can use a newly created table. (Firebird)
  // With .Commit you also close the transaction
  ATransaction.Commit;

  ATransaction.StartTransaction;
  AConnection.ExecuteDirect('insert into TBLNAMES (ID,NAME) values (1,'Name1');');
  AConnection.ExecuteDirect('insert into TBLNAMES (ID,NAME) values (2,'Name2');');
  ATransaction.Commit;
  AConnection.Close;
  AConnection.Free;
  ATransaction.Free;
end.

Пример взят отсюда
mkazakov
новенький
Сообщения: 52
Зарегистрирован: 24.02.2012 14:04:14
Откуда: Балаково

Сообщение mkazakov »

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

Сообщение dunin »

mkazakov писал(а):Понимаю что тема старая но кто что использует? желательно что бы с кодировками проблем не было :?

FireBird 2.5 + lazarus + UIB + FBDataSet + RxDBGrid

в базе

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

SET SQL DIALECT 3;
SET NAMES UTF8;
CREATE DATABASE %BASENAME%
USER %BASEUSER% PASSWORD %BASEPASSWORD%
PAGE_SIZE 16384
DEFAULT CHARACTER SET UTF8;
...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Сообщение dunin »

alexs писал(а):dunin
Ещё забыл для полного счастья упомянуть IBExpert - это сразу надо, чтобы начинающие разработчики не мучились с другими инструментами.

Верно. :)
Но это как-бы сторонний инструмент, потому и не упоминал.
Виндус - IBExpert. Линукс - FlameRobin.
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

dunin писал(а):
mkazakov писал(а):Понимаю что тема старая но кто что использует? желательно что бы с кодировками проблем не было :?


Firebird 2.5 + lazarus + Zeos 7 + RxDbGrid + RxDbRadioGroup + Rx.....

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

codepage=UTF8
hard_commit=yes


Полет нормальный, хотя изначально база в СР1251

Lazarus 0.9.31 r36017 FPC 2.7.1 i386-win32-win32/win64
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

dunin писал(а):Виндус - IBExpert. Линукс - FlameRobin.

IBExpert прекрасно работает в линухе под wine. FlameRobin - не дотягивает до уровня эксперта. Там один отладчик процедур/тригеров чего стоит...
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexs писал(а):
dunin писал(а):Виндус - IBExpert. Линукс - FlameRobin.

IBExpert прекрасно работает в линухе под wine. FlameRobin - не дотягивает до уровня эксперта. Там один отладчик процедур/тригеров чего стоит...

Мой подход: если надо как следует в БД поковыряться, то уходим в Виндус и там IBExpert-ом отлаживаем. Потом готовый код можно и на Линуксе применять. Wine - еще тот костыль. Там работает - тут не работает, потом (внезапно!) обновился - тут работает - там не работает. Проще Виндуса сразу загрузить.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Последние версии вины работают уже достаточно стабильно. Эксперт работает там хорошо.
Ответить