PowerBuilder: Изключете базата данни при неактивност

Имам приложение в PowerBuilder и много потребители го държат отворено неизползвано с часове. Понякога една операция забравя да се ангажира; следователно някои таблици остават заключени за неопределено време, като по този начин не позволяват на всички да работят. Опитах се да поставя всички ангажименти на място, но наистина е трудно да се отстранят грешки в такова голямо приложение. Бих искал да прекъсна връзката с базата данни, когато приложението е неактивно. Това не е трудно, но моят проблем е, че когато мишката или клавиатурата бъдат докоснати, приложението трябва да отвори отново връзката. Как да направя това? Не е приемливо приложението да се затваря всеки път, когато е неактивно.


person carlo.borreo    schedule 19.03.2013    source източник


Отговори (2)


Първо, бих ви препоръчал да не поемете по лесния начин и да се заемете със затварянето на всички тези транзакции. Ако имате нещо неизпълнено, освен проблема със заключването, нямате представа дали следващият оператор, който се случва да бъде изпълнен, ще бъде COMMIT или ROLLBACK, нито кое е необходимо сега. Моят опит с това е, че този вид разследване винаги извежда други проблеми около транзакцията. Този проблем вероятно е по-голям от ключалките.

Що се отнася до повторното свързване, ако вървите по този маршрут (очевидно не е първият ми избор), бих препоръчал алтернативен дизайн: СВЪРЗВАЙТЕ, когато имате нужда от връзката следващия път. По принцип (ако смятате да капсулирате кода във функция във вашия обект на транзакция):

IF DBHandle() = 0 THEN CONNECT using THIS;

Ако имате рамка като PFC, вероятно ще имате само няколко места за кодиране на това. Ако нямате рамка, която капсулира части от работа като извличане и актуализиране, тогава ще ви се иска да имате. Все още може да е по-добре, отколкото да понижавате ефективността си, като проверявате връзка с база данни при всяко натискане на клавиш и движение на мишката.

Късмет,

Тери.

person Terry    schedule 20.03.2013
comment
Тери може ли да бъдеш по-конкретен? Грешката със замразяването на приложението при неактивност е най-досадното нещо, което сме наследили, след като мигрирахме от SQL Server 2000 към 2005/8 (от MSS към SNC). - person PanosPlat; 20.04.2013
comment
@PanosPlat: Не ми е много ясно за какво искаш разяснение. - person Terry; 22.04.2013

Уловете движението на мишката и ключовите събития. Когато един от тези пожари, издайте CONNECT; изявление.

Вижте:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/BFCCFFGH.htm

person Michael Harmon    schedule 20.03.2013