2010-05-22 111 views
1

我只是把我的頭圍繞着java(和OOP),我唯一熟悉的就是MySQL。我需要在應用程序的整個持續時間保持數據庫連接的打開狀態,以及服務器套接字。Java/MySQL - 如何從另一個類訪問連接?

我甚至不知道他們是否都需要單獨的類,但這裏是我到目前爲止有:

http://pastebin.com/qzMFFTrY (它不會都去在代碼標籤)

變量i需要的是con用於第86行。

回答

0

爲什麼不實例化DoComms以前的連接?

例如第44行是:

DoComms conn_c = new DoComms(server, con); 

DoComms將持有該連接的引用,然後用它在線路86

注意,你得到的連接,然後之前關閉它在finally你實例化你的DoComms對象(第28行)。所以,一旦你完成了一切處理,你應該關閉你的連接。簡述:

try { 
    // get connection 

    // do stuff in threads 
} 
catch { 
    // handle 
} 
finally { 
    con.close(); 
} 

如果你的應用是長期存在的,那麼我會使用連接池的要求(例如C3P0或Apache DBCP)和打開/關閉連接。但是,您的方法可能適合您的要求,我暫時不擔心這一點。

3

我需要保持數據庫連接整個應用程序

你不應該這樣做的時間開放。連接的有限生命週期的長度不受應用程序的控制。當數據庫決定連接打開時間過長時,它會關閉連接,您將得到connection resetconnection timed out例外。這通常是30分鐘左右,但也可能更少。

正常JDBC做法是獲取和關閉ConnectionStatement和在最短的範圍ResultSet,即在作爲執行查詢非常相同的方法塊中。

如果保持長時間連接的原因是由於性能,那麼您應該考慮連接池,例如c3p0usage guide here)。

+0

使用臨時表還可能需要連接才能維持一段時間。你可以在一段時間內完成ping操作,儘管個人而言,我會去尋找替代解決方案就是這種情況。 – extraneon 2010-05-22 15:17:21