在關閉java中的數據庫連接之後,我可以重新打開它嗎?或者我需要再次做DriverManager.getConnection()
?在Java中重新打開數據庫連接
回答
我不是100%確定您需要需要致電DriverManager.getConnection()
但是有什麼危害?您已經關閉了連接,只需在需要時連接一個新連接即可。垃圾收集器在丟棄之後擔心該封閉連接。
是的,關閉連接後無法做任何事情。你必須調用getConnection
由於Javadoc提到:
getConnection: Attempts to establish a connection to the given database URL.
所以,是的,調用的getConnection()再次看起來像建立與數據庫的新連接,一旦你關閉以前的連接的唯一方式。
如果您已撥打connection.close();
,connection
(假設java.sql.Connection
類型)變得無用。此操作將釋放此Connection對象的數據庫和JDBC資源。
所以是你需要獲得一個新的連接時,纔可以通過
connection = DriverManager.getConnection()
我在C#中做了所有事情之後,纔開始使用JDBC連接SQL Server連接,而且昨天的這半天,這對我來說是一個很大的謎團。 – JoeManiaci 2015-06-25 15:47:31
那麼理想的情況下繼續進行我做了稍微不同的方式,給了不同的解決方案。
而是打開和關閉數據庫,對客戶的每一個要求的字面發生的事情,我做了一個類的單一實例,並作出安排,只要服務器的過程是活的重複使用單一打開的連接。
簡而言之:
我有getConnection()
內部Database
類
public Connection getConnection() throws Exception {
try {
String connectionURL = "jdbc:mysql://localhost:3306/someDatabase";
Class.forName("com.mysql.jdbc.Driver").newInstance();
if (connection == null) {
connection = DriverManager.getConnection(connectionURL, "someUser", LOCAL_MYSQL_PASSWORD);
}
return connection;
} catch (Exception e) {
}
}
的Database
類是單例,因此重複使用相同的類和再使用相同的連接。
我已經測試了這個show processList
,這個給了大約100個連接如果我不關閉連接,甚至如果我關閉連接,實際進程不會被殺死,而是進入睡眠狀態相反,只要同一個客戶端會請求相同的請求,就會使用它,但如果您有15個請求,那麼每個請求都會有單獨的進程,因此關閉和打開連接對我來說並不是最佳解決方案。
由此我有1個單獨的進程負責查詢層。
- 1. 在Django中重新連接數據庫
- 2. FTP重新打開連接
- 3. EF:如果斷開連接,重新連接到數據庫
- 4. 在Java中重新使用數據庫連接
- 5. 重新連接數據庫,如果連接重新啓動
- 6. 關閉和打開數據庫連接?
- 7. 檢測打開的數據庫連接
- 8. BSAF檔位打開數據庫連接
- 9. 關閉打開的數據庫連接?
- 10. 保持數據庫連接打開?
- 11. 檢測打開的數據庫連接
- 12. 無法打開數據庫連接
- 13. NHibernate ISessionFactory.OpenSession()不打開數據庫連接
- 14. Qt:數據庫連接不會打開
- 15. log4net打開數據庫連接
- 16. 重新打開已連接的數據報套接字
- 17. 當數據庫重新啓動/斷開連接時,JBoss自動重新連接數據庫
- 18. 重新打開數據庫後onpause
- 19. Java重新打開用於新連接的ServerSocket
- 20. 更新數據庫連接java
- 21. 更改數據庫或打開新連接會更密集嗎?
- 22. 重置或刷新數據庫連接
- 23. 自動重新連接postgresq數據庫
- 24. TYPO3重新連接到數據庫
- 25. Django數據庫重新連接
- 26. 重新連接到數據庫
- 27. 嘗試重新連接到數據庫
- 28. AnyEvent :: DBI和數據庫重新連接
- 29. 從NodeJs連接SQL數據庫 - ConnectionError:連接尚未打開
- 30. c#ChannelFactory:如何在FaultException | TimeoutException之後重新連接/重新打開連接?
有什麼這麼難嘗試? – 2012-04-06 13:21:22
你還看到Connection上的任何打開方法嗎? – MrJames 2012-04-06 13:28:52
我沒有看到任何連接中的打開方法。那麼我該如何嘗試呢?調用'getConnection'將會起作用,嘗試它,但它是「正確」的方式嗎? – 2012-04-06 14:25:10