Lazarus + Sqlite

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

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

Ответить
Аватара пользователя
DYUMON
постоялец
Сообщения: 234
Зарегистрирован: 11.03.2009 12:32:54
Контактная информация:

Lazarus + Sqlite

Сообщение DYUMON »

Доброго всем времени суток. Такое дело . Решил попробовать написать небольшую БД на Lazarus . вообще пишу на delphi но тут вот захотел попробовать продукт. Сделала базу для sqlite все таблицы создал. И вот в чем проблемма. добавляю в базу запись при использовании select она отображатеся однако если выйди из программы и зайти вновь то она исчезает. разобрался что надо добавить

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

SQLTransaction1.Commit;

хотя когда писал для sqlite в delphi то с этим проблем не было. Подскажите действительно ли надо делать коммиты после каждого добавления или же можно как то это обойти? и еще маленький подвопросик . Есть ли в lazarus аналог SqlTable ?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

2DYUMON
Commit после Insert или Update делать обязательно. Если вы добавляете несколько строк за один приём, то лучше делать Commit после всех операций в рамках транзакции - так будет быстрее.

Что-то похожее на таблицы есть в Lazarus-SQLite.
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

DYUMON писал(а):действительно ли надо делать коммиты после каждого добавления или же можно как то это обойти?

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

procedure TForm1.SQLite3Connection1BeforeDisconnect(Sender: TObject);
begin
  (Sender as TSQLConnection).Transaction.Commit;
end;

Но, если связь с бд пропадет до корректного завершения соединения, то транзакция будет откачена и изменения пропадут. Поэтому надежней

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

procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
begin
  ((DataSet as TSQLQuery).DataBase as TSQLConnection).Transaction.CommitRetaining;
end;
Ответить