1

我一直在构建一个测试应用程序,该应用程序与直到最近还没有 UI 的数据库一起使用。我现在加一个。问题是,JFrame 在另一个线程中启动,我需要在该线程关闭时关闭我的数据库连接(我应该说当 UI 关闭时)。我该怎么做呢?

此外,如果应用程序崩溃或被强制关闭,应用程序的数据库连接(在本例中为嵌入式数据库)会发生什么情况?我听说未关闭的连接会导致资源泄漏。如果发生这种情况,我能做些什么来清理?

4

2 回答 2

4

您可以在运行时系统中添加关闭挂钩。这是一个将在关闭虚拟机时触发的线程。在线程中,您可以关闭所有数据库连接和其他关键资源。

于 2009-03-30T09:37:43.923 回答
3
  1. 如果用户尝试关闭您的JFrame,则将触发WindowClosingEvent 。因此,在这种方法中,您可以关闭您的连接。
  2. 您的 DBMS 使用连接池。如果您没有正确关闭连接,则此连接池将充满未使用的连接。
    如果池已满并且需要新的连接,那就不好了。该应用程序将无法正常工作。用户要么等待并再试一次(在他等待时,一个连接可能会关闭或终止),要么手动重新启动数据库,因此所有连接都将丢失。
    DBMS 在预定义的时间后关闭所有未使用的连接。这次指定了哪个参数,您可以在 DBMS 手册中找到它。

除了你的评论:你不能保证你有足够的时间来清理你的连接。可能您的应用程序被您的系统或其他任何东西杀死了。所以:尝试尽快清理您的连接。
只有在丢失连接对象后,DBMS 才能删除未使用的连接。

于 2009-03-30T09:28:26.020 回答