Lazarus и Firebird

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

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

Ответить
sunrider
новенький
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Lazarus и Firebird

Сообщение sunrider »

Обратил внимание, что независимо, от того как закрываются формы на которых есть компоненты типа TSQLQuery, сервер Firebird память не особождает вплоть до закрытия программы. Повторное создание такой формы приводит к дополнителным затратам памяти со стороны сервера. В Делфи все работает нормально.
Может кто-то знает в чем проблема?
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

а у меня тоже такая проблема, и не только с Firebird, с InterBase такая же фигня...
это чето мы не так делаем...
я еще не разбиралс, руки не доходят, там надо как то базу закрывать и память освобождать...
а у тебя при закрытии фпрмы ошибки никакие не вылитают? только при закрытии в отладке?
sunrider
новенький
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение sunrider »

так весь фокус в том, что я стал явно закрывать SQLQuery, но это ничего не дает. И это не глюк Firebird. Черт его знает, может нужно явно транзакцию завершить? Хотя в Делфи это не нужно было делать.
Ладно будем копаться дальше. Спасибо за ответ :-)
sunrider
новенький
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение sunrider »

Нет так на вскидку не помогает просто транзакцию закрыть.
Не разрывать же соединение каждый раз.
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

так нет, ты SQLQuery закрываеш, а на сервере она остаетса открытой... теоретически надо закрывать само подключение к базеданных и транзакцию... в моем случае это FIBDataBase, FIBTransaction я єти компоненты использую... а SQLQuery закрываеш, а само подключение к БД остаетса открытым...
теоретически так...
sunrider
новенький
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение sunrider »

Это странно. я уже писал: в Делфи все работает нормально. При закрытии TDataset и освобождении памяти, на сервере тоже память освобождается.
Почему здесь не так? Ну ок отключу я соединение, а что делать с остальными запросами? Их ведь придется тоже переоткрывать?
Или нужно для каждого запроса отдельно создавать соединение и стартовать транзакцию?
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

нет, соединение одно, транзакция одна, и каждый запрос я поновой открываю...
sunrider
новенький
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение sunrider »

Все, я разобрался. Просто воспользовался чужим куском кода, даже не посмотрев :-). Такм динамически созавался еще один компонент трансзакции. Убрал - все заработало через одно соединение. И память тоже перестала расходоваться
Ответить