Могут ли два Zquery мешать друг другу?

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

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

Могут ли два Zquery мешать друг другу?

Сообщение Climber » 29.10.2009 17:08:46

У меня есть 2 ZQuery в разных модулях, которые используют один общий ZConnection. При запуске программы происходит коннект к базе, потом в обработчиках OnCreate форм выполняются процедуры такого типа:
Код: Выделить всё
procedure tratata;
begin
  try
  ZQuery1.SQL.Text:='текст запроса';
  ZQuery1.Open;
  ...
  except
    ShowMessage('Сообщение об ошибке');
  end;
end;
Обе процедуры выглядят похоже, только выполняют немного разные манипуляции с результатами запросов. Вторую я добавил недавно. Теперь происходит вот что: после выполнения первой процедуры во второй процедуре возникает ошибка SIGSEGV на строчке ZQuery1.SQL.Text:='текст запроса', причем обработчиком исключений она не обрабатывается, программа просто тихо завершается. Если первую процедуру закомментить, то вторая работает нормально.Что там может быть не так?
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Могут ли два Zquery мешать друг другу?

Сообщение Владимир » 29.10.2009 22:52:40

Climber писал(а):У меня есть 2 ZQuery в разных модулях, которые используют один общий ZConnection. При запуске программы происходит коннект к базе, потом в обработчиках OnCreate форм выполняются процедуры такого типа:
Код: Выделить всё
procedure tratata;
begin
  try
  ZQuery1.SQL.Text:='текст запроса';
  ZQuery1.Open;
  ...
  except
    ShowMessage('Сообщение об ошибке');
  end;
end;
Обе процедуры выглядят похоже, только выполняют немного разные манипуляции с результатами запросов. Вторую я добавил недавно. Теперь происходит вот что: после выполнения первой процедуры во второй процедуре возникает ошибка SIGSEGV на строчке ZQuery1.SQL.Text:='текст запроса', причем обработчиком исключений она не обрабатывается, программа просто тихо завершается. Если первую процедуру закомментить, то вторая работает нормально.Что там может быть не так?


1.Тупой путь - поставить второй ZConnection (возможно со своим SQLTransaction) и забыть.
2. Мягко - разбираться с переподключением к базе - возможно ZQuery1.Active:=False а потом запрос и ZQuery2.Active:=True
либо с разбираться с ZConnection...connect/disconnect...
p.s. сам с Zeos под Win Lazarus не сталкивался, поэтому все вышесказанное - предположение!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Могут ли два Zquery мешать друг другу?

Сообщение Climber » 30.10.2009 09:42:59

У меня есть предположение, что Lazarus в последнее время начал жутко глючить, потому что такие косяки случаются слишком часто. Проблема пропала, когда я переписал все то же самое, но немного по-дургому (заодно и переделал несколько кусков, которые давно просились на переделку). Да и вообще зачастили случаи, когда AV в процессе выполнения программы лечится перезапуском Lazarus и повторной компиляцией.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Могут ли два Zquery мешать друг другу?

Сообщение Inferno » 30.10.2009 10:00:26

Ну, не знаю..... У меня чтобы без основательно AV выпало, не помню. Одно только глючит когда запускается отладчик и начинаешь ставить или убирать точки останова. А так всё стабильно.
У меня Линукс. FPC и Lazarus из trunk.
Про два ZQuery- активно используется в большом приложении много ZQuery с одним TZConnection - тоже проблем не было.
Аватара пользователя
Inferno
новенький
 
Сообщения: 78
Зарегистрирован: 20.03.2009 14:40:20
Откуда: Тюмень

Re: Могут ли два Zquery мешать друг другу?

Сообщение Vadim » 30.10.2009 18:56:28

У меня тоже с десяток ZQuery работают через один ZConnection. Проблем никаких не было никогда.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru