Lazarus и Firebird

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

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

Lazarus и Firebird

Сообщение sunrider » 30.06.2006 03:53:13

Обратил внимание, что независимо, от того как закрываются формы на которых есть компоненты типа TSQLQuery, сервер Firebird память не особождает вплоть до закрытия программы. Повторное создание такой формы приводит к дополнителным затратам памяти со стороны сервера. В Делфи все работает нормально.
Может кто-то знает в чем проблема?
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение Джентельмен » 30.06.2006 09:16:32

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

Сообщение sunrider » 30.06.2006 15:22:52

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

Сообщение sunrider » 30.06.2006 15:31:18

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

Сообщение Джентельмен » 30.06.2006 17:54:46

так нет, ты SQLQuery закрываеш, а на сервере она остаетса открытой... теоретически надо закрывать само подключение к базеданных и транзакцию... в моем случае это FIBDataBase, FIBTransaction я єти компоненты использую... а SQLQuery закрываеш, а само подключение к БД остаетса открытым...
теоретически так...
Джентельмен
постоялец
 
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск

Сообщение sunrider » 30.06.2006 19:03:26

Это странно. я уже писал: в Делфи все работает нормально. При закрытии TDataset и освобождении памяти, на сервере тоже память освобождается.
Почему здесь не так? Ну ок отключу я соединение, а что делать с остальными запросами? Их ведь придется тоже переоткрывать?
Или нужно для каждого запроса отдельно создавать соединение и стартовать транзакцию?
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение Джентельмен » 01.07.2006 15:10:37

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

Сообщение sunrider » 02.07.2006 02:58:32

Все, я разобрался. Просто воспользовался чужим куском кода, даже не посмотрев :-). Такм динамически созавался еще один компонент трансзакции. Убрал - все заработало через одно соединение. И память тоже перестала расходоваться
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru