Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

транзакции IB6 [D5, IB6.x]


cf ©   (2002-11-21 15:52:00) 

Всем привет!
У меня следующая проблема. Пишу приложение, работающее с IB6 через BDE. Выполняю 1-ый SQL запрос, в виде транзакции
Database1.StartTransaction;
- - - Выполняю запрос - - -
Database1.Commit;

После этого сразу же выполняю другой аналогичный SQL-запрос, так же в виде транзакции. Проблема в том, что если такие транзакции идут сразу же друг за другом, то приложение намертво подвисает, показав мне песочные часы SQL. В случае же, если я выдерживаю между транзакциями некую паузу, то все ОК. Перед началом второй транзакции свойство Database1.inTransaction = Falsе.
Подскажите, как мне правильно решить данную проблему.
Заранее благодарен.


Prooksius   (2002-11-22 11:01:00) [1]

2 Victor_Cr © (22.11.02 10:49)
Нет. Клиент не сможет начать обрабатывать вторую тр-ю, если не закончил работать с первой (имеется в виду один thread).
Например, если твоя 1-я тр-я занимается интенсивной и длительной сборкой мусора, то ты не начнешь 2-ю.


Victor_Cr   (2002-11-22 10:49:00) [2]

2 Alexandr © (22.11.02 07:03)

По-моему, при отсылке сообщения на сервер о завершении транзакции, сам сервер обрабатывает некоторое время эти данные и должен отослать клиенту сообщение о ее корректном (или не очень) завершении. И при попытке тут же начать вторую транзакцию клиент может не успеть обработать сообщение сервера. Результат: глючит система. Но это лично мои догадки, т.к. в литературе об этом ничего на сказано (либо я плохо искал).


Alexandr   (2002-11-22 07:03:00) [3]

бред.
Как это отдельным потоком?
А ведь говорили, ничего особенного в исходниках нету...


cf   (2002-11-21 17:44:00) [4]

>Victor_Cr ©
OK, попробую!


Victor_Cr   (2002-11-21 16:55:00) [5]

Возможно транзакция выполняеться отдельным потоком. У меня был такой глюк, и от него я избавился путем встаки между транзакциями Application.ProcessMessages


cf   (2002-11-21 16:18:00) [6]

Подробностей сейчас дать не могу, т.к. исходников под рукой нет.
Но даже, если бы они у меня сейчас были, то там все равно ничего нет особенного. Запросы корректные, по отдельности все работают на ура. Но друг за другом без задержки не хотят.

>Prooksius © (21.11.02 16:02)
>Вообще-то желательно выполнять эти запросы в одной транзакции.
Можно, конечно, но если это и решит проблему, то все равно непонятна причина её возникновения...


Prooksius   (2002-11-21 16:02:00) [7]

Такого не должно быть.
Вообще-то желательно выполнять эти запросы в одной транзакции.


Alexandr   (2002-11-21 15:58:00) [8]

в общем случае по твоему описанию такой проблемы нет.
Давай подробности.


Наверх

Титульная страница Поиск, карта сайта Написать письмо