1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
讓我們從Derby 文檔中的內(nèi)容開(kāi)始:
關(guān)閉 Derby 或單個(gè)數(shù)據(jù)庫(kù)
嵌入式環(huán)境中的應(yīng)用程序通過(guò)在連接 URL 中指定 shutdown=true 屬性來(lái)關(guān)閉 Derby 系統(tǒng)。要關(guān)閉系統(tǒng),您無(wú)需指定數(shù)據(jù)庫(kù)名稱(chēng),通常也無(wú)需指定任何其他屬性。
jdbc:derby:;shutdown=true成功關(guān)閉總是會(huì)導(dǎo)致 SQLException 指示 Derby 已關(guān)閉并且沒(méi)有其他異常。
如果您在系統(tǒng)級(jí)別啟用了用戶(hù)身份驗(yàn)證,則需要指定憑據(jù)(即用戶(hù)名和密碼)才能關(guān)閉 Derby 系統(tǒng),并且還必須在系統(tǒng)級(jí)別定義提供的用戶(hù)名和密碼。
等等。
你的問(wèn)題:
1) 為什么我需要一個(gè)活動(dòng)連接來(lái)關(guān)閉特定數(shù)據(jù)庫(kù)?
因?yàn)槲臋n是這樣說(shuō)的。
因?yàn)檫@就是他們實(shí)施它的方式。
因?yàn)殛P(guān)閉數(shù)據(jù)庫(kù)(通常)需要用戶(hù)認(rèn)證,而連接建立是用戶(hù)認(rèn)證發(fā)生的地方。
2)關(guān)閉連接然后關(guān)閉數(shù)據(jù)庫(kù)不是更有意義嗎?
鑒于最后一個(gè),沒(méi)有。
3)如果特定數(shù)據(jù)庫(kù)關(guān)閉,為什么我需要關(guān)閉連接?
如果您的應(yīng)用程序能夠應(yīng)對(duì)潛在的資源泄漏,您就不需要這樣做;例如,可能尚未在客戶(hù)端關(guān)閉的套接字。
但是,如果您的應(yīng)用程序要在關(guān)閉數(shù)據(jù)庫(kù)后繼續(xù)運(yùn)行,這當(dāng)然是可取的。
4)為什么在特定數(shù)據(jù)庫(kù)關(guān)閉后我能夠重新建立連接?
大概是因?yàn)樗荚谠试S這樣做。
5)關(guān)閉特定數(shù)據(jù)庫(kù)和關(guān)閉連接之間的實(shí)際區(qū)別是什么?
(我對(duì)此并不完全確定......)
關(guān)閉數(shù)據(jù)庫(kù)將使特定數(shù)據(jù)庫(kù)的所有連接無(wú)效。它不會(huì)在客戶(hù)端關(guān)閉它們,因此套接字可能會(huì)保持打開(kāi)狀態(tài)......直到使用相應(yīng)集合的應(yīng)用程序部分嘗試使用它們,發(fā)現(xiàn)它們“死”并關(guān)閉它們。
相比之下,關(guān)閉連接即將關(guān)閉該連接,無(wú)論是在服務(wù)器和客戶(hù)端。任何套接字都應(yīng)立即關(guān)閉。
注意:在嵌入式模式下使用 derby
該文檔沒(méi)有區(qū)分嵌入式和非嵌入式模式。
添加回答
舉報(bào)