在Java中重新打开数据库连接
在java中关闭数据库连接后,我可以重新打开它吗?或者我需要再次执行在Java中重新打开数据库连接,java,jdbc,Java,Jdbc,在java中关闭数据库连接后,我可以重新打开它吗?或者我需要再次执行DriverManager.getConnection()?我不能100%确定您是否需要调用DriverManager.getConnection(),但有什么害处?你已经关闭了连接,需要的时候再接一个。垃圾回收器会在您放弃已关闭的连接后担心它。是的,关闭连接后您将无法执行任何操作。您必须调用getConnection,如前所述: getConnection: Attempts to establish a connection
DriverManager.getConnection()
?我不能100%确定您是否需要调用DriverManager.getConnection()
,但有什么害处?你已经关闭了连接,需要的时候再接一个。垃圾回收器会在您放弃已关闭的连接后担心它。是的,关闭连接后您将无法执行任何操作。您必须调用getConnection
,如前所述:
getConnection: Attempts to establish a connection to the given database URL.
因此,是的,一旦关闭以前的连接,再次调用getConnection()看起来是与数据库建立新连接的唯一方法。如果调用了
connection.close()
,连接(假设java.sql.connection
类型)变得无用。此操作释放此连接对象的数据库和JDBC资源
因此,是在继续之前,您需要获得一个新的连接
connection = DriverManager.getConnection()
理想情况下,我采用了稍微不同的方法,给出了不同的解决方案
我创建了一个类的单例实例,并创建了一个打开的连接,只要服务器的进程处于活动状态,就可以重用该连接,而不是打开和关闭数据库,这实际上是在客户机的每个请求上都会发生的
简言之:
我有getConnection()
在数据库中类
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) {
}
}
数据库
类是单例的,因此重用相同的类和相同的连接
我已经通过ShowProcessList进行了测试,如果我不关闭连接,这一个将提供大约100个连接,即使我关闭连接,实际的进程也不太可能被终止,而是进入睡眠状态,因此当同一客户端请求相同的请求时,将使用它,但是如果您有15个请求,然后它们中的每一个都会有单独的过程,所以关闭和打开连接对我来说并不是最好的解决方案
这样,我就有了一个负责查询的进程层。试一试有什么困难?你在连接中看到了任何打开的方法吗?我在连接中没有看到任何打开的方法。那我该怎么做呢?调用getConnection
会起作用,尝试过,但这是“正确”的方法吗?在用C#做了所有事情之后,我刚刚开始做JDBC到SQL Server的连接,昨天半天来,男孩一直是个大谜。