在Java中重新打开数据库连接

在Java中重新打开数据库连接,java,jdbc,Java,Jdbc,在java中关闭数据库连接后,我可以重新打开它吗?或者我需要再次执行DriverManager.getConnection()?我不能100%确定您是否需要调用DriverManager.getConnection(),但有什么害处?你已经关闭了连接,需要的时候再接一个。垃圾回收器会在您放弃已关闭的连接后担心它。是的,关闭连接后您将无法执行任何操作。您必须调用getConnection,如前所述: getConnection: Attempts to establish a connection

在java中关闭数据库连接后,我可以重新打开它吗?或者我需要再次执行
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的连接,昨天半天来,男孩一直是个大谜。