0

我在 PowerBuilder 中有一个应用程序,许多用户将其打开几个小时未使用。有时,操作忘记提交;因此,某些表会无限期地锁定,从而阻止每个人工作。我试图将所有提交都放在适当的位置,但在如此大的应用程序中调试它真的很困难。我想在应用程序空闲时断开数据库连接。这并不难,但我的问题是,当鼠标或键盘被触摸时,应用程序需要重新打开连接。我怎么做?每次空闲时都关闭应用程序是不可接受的。

4

2 回答 2

3

首先,我建议您不要采取简单的方式,并着手完成所有这些交易。如果你有一些未提交的东西,除了锁定问题,你不知道下一个恰好执行的语句是 COMMIT 还是 ROLLBACK,现在也不需要。我的经验是,这种调查总是会引发围绕交易的其他问题。这个问题可能比锁更大。

至于重新连接,如果您要走这条路线(显然不是我的首选),我会推荐另一种设计:当您接下来需要连接时连接。基本上(如果您要将代码封装在事务对象的函数中):

IF DBHandle() = 0 THEN CONNECT using THIS;

如果你有一个像 PFC 这样的框架,那么你可能只有几个地方可以编写这个代码。如果您没有一个框架来封装诸如检索和更新之类的工作,那么您将希望自己做到了。仍然可能比通过在每次击键和鼠标移动时检查数据库连接来降低性能要好。

祝你好运,

特里。

于 2013-03-20T17:06:10.153 回答
0

捕获 mousemove 和 key 事件。当其中一种火灾发生时,发出 CONNECT;陈述。

看:

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

于 2013-03-20T12:37:56.750 回答