1 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
TA贡献1797条经验 获得超6个赞
让我们从Derby 文档中的内容开始:
关闭 Derby 或单个数据库
嵌入式环境中的应用程序通过在连接 URL 中指定 shutdown=true 属性来关闭 Derby 系统。要关闭系统,您无需指定数据库名称,通常也无需指定任何其他属性。
jdbc:derby:;shutdown=true成功关闭总是会导致 SQLException 指示 Derby 已关闭并且没有其他异常。
如果您在系统级别启用了用户身份验证,则需要指定凭据(即用户名和密码)才能关闭 Derby 系统,并且还必须在系统级别定义提供的用户名和密码。
等等。
你的问题:
1) 为什么我需要一个活动连接来关闭特定数据库?
因为文档是这样说的。
因为这就是他们实施它的方式。
因为关闭数据库(通常)需要用户认证,而连接建立是用户认证发生的地方。
2)关闭连接然后关闭数据库不是更有意义吗?
鉴于最后一个,没有。
3)如果特定数据库关闭,为什么我需要关闭连接?
如果您的应用程序能够应对潜在的资源泄漏,您就不需要这样做;例如,可能尚未在客户端关闭的套接字。
但是,如果您的应用程序要在关闭数据库后继续运行,这当然是可取的。
4)为什么在特定数据库关闭后我能够重新建立连接?
大概是因为它旨在允许这样做。
5)关闭特定数据库和关闭连接之间的实际区别是什么?
(我对此并不完全确定......)
关闭数据库将使特定数据库的所有连接无效。它不会在客户端关闭它们,因此套接字可能会保持打开状态......直到使用相应集合的应用程序部分尝试使用它们,发现它们“死”并关闭它们。
相比之下,关闭连接即将关闭该连接,无论是在服务器和客户端。任何套接字都应立即关闭。
注意:在嵌入式模式下使用 derby
该文档没有区分嵌入式和非嵌入式模式。
添加回答
举报