Java / MySQL - 如何从另一个类访问连接?

时间:2010-05-22 14:40:56

标签: java mysql jdbc

我只是关注java(以及OOP),我唯一熟悉的是MySQL。我需要在整个应用程序期间保持数据库连接打开,以及服务器套接字。

我甚至不确定他们是否都需要单独的课程,但这是我到目前为止所拥有的:

http://pastebin.com/qzMFFTrY (它不会全部进入代码标签)

我需要的变量是第86行的 con

2 个答案:

答案 0 :(得分:3)

  

我需要在整个应用程序期间保持数据库连接打开

你不应该这样做。连接的使用寿命有限,其长度不受您应用程序的控制。当数据库确定连接已打开太长时间时,它将关闭连接,您将获得connection resetconnection timed out个例外。这通常是30分钟左右,但也可能更少。

正常的JDBC实践是在尽可能短的范围内获取和关闭ConnectionStatementResultSet,即在执行查询的方法块中。

如果长时间保持连接的原因是性能原因,那么您应该考虑连接池,例如c3p0usage 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)和打开/关闭连接。然而,您的方法可能适合您的要求,我暂时不担心。