我只是关注java(以及OOP),我唯一熟悉的是MySQL。我需要在整个应用程序期间保持数据库连接打开,以及服务器套接字。
我甚至不确定他们是否都需要单独的课程,但这是我到目前为止所拥有的:
http://pastebin.com/qzMFFTrY (它不会全部进入代码标签)
我需要的变量是第86行的 con 。
答案 0 :(得分:3)
我需要在整个应用程序期间保持数据库连接打开
你不应该这样做。连接的使用寿命有限,其长度不受您应用程序的控制。当数据库确定连接已打开太长时间时,它将关闭连接,您将获得connection reset
或connection timed out
个例外。这通常是30分钟左右,但也可能更少。
正常的JDBC实践是在尽可能短的范围内获取和关闭Connection
,Statement
和ResultSet
,即在执行查询的方法块中。
如果长时间保持连接的原因是性能原因,那么您应该考虑连接池,例如c3p0(usage guide here)。
答案 1 :(得分:0)
为什么不使用之前的连接实例化DoComms
?
e.g。第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)和打开/关闭连接。然而,您的方法可能适合您的要求,我暂时不担心。