为什么我们应该在JDBC中关闭连接?如果我们不这样做,会发生什么

Roc*_* Hu 5 connection database-connection connection-pooling jdbc

在java中与数据库通信,我们经常按照以下步骤操作:

  1. 加载驱动程序
  2. 得到一个连接
  3. 创建一个Statement或 PreparedStatement
  4. 得到了 ResultSet
  5. 关闭连接

我很困惑,我们应该关闭连接,所有人说创建连接是昂贵的,所以为什么我们不能这样做:

static
    {
        try
        {
            connection = DriverManager.getConnection(connectorURL,
                    user, password);
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们只是创建一个单独的连接,并在任何地方使用它.不是吗?如果我像这样使用它会发生什么?

如果我不关闭连接,会发生什么?

另外,我们将使用连接池,它将在池中创建一些连接,并且我们从池中获取连接,池中的连接也不关闭,为什么如果我们不使用池,我们需要关注如果我们不使用步骤并关闭连接?

它太混乱了,我不知道原理是什么.请帮我.谢谢.

小智 6

如果我们不关闭连接,将导致连接内存泄漏.除非/直到应用程序服务器/ Web服务器关闭,否则即使用户注销,连接仍将保持激活状态.

还有其他原因.假设数据库服务器有10个可用连接,10个客户端请求连接.如果数据库服务器授予所有这些服务器,并且在使用它们之后它们没有关闭,则数据库服务器将无法为另一个请求提供连接.出于这个原因,我们需要关闭它们 - 这是强制性的.

此外,它可能会导致一些关于数据库完整性的恶作剧活动.