【问题标题】:Is it necessary to close jdbc connection in localhost是否需要在 localhost 中关闭 jdbc 连接
【发布时间】:2016-05-27 01:43:56
【问题描述】:

我在我构建的 java 项目中使用静态方法来查询 localhost mysql db。

类似的东西:

public static void sqlQuery() {
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
        conn = DriverManager.getConnection(localhost,root,password);
        stmt = conn.prepareStatement(Some SQL);
        rs = stmt.executeQuery();
    } catch(Exception e) {
        // Error Handling
    } finally {
        try { if (rs != null) rs.close(); } catch (Exception e) {};
        try { if (stmt != null) stmt.close(); } catch (Exception e) {};
        try { if (conn != null) conn.close(); } catch (Exception e) {};
    }
}

我的问题是我是否可以保留 conn 变量而不关闭它并再次将其重用于另一个查询。

没有其他应用程序使用此数据库,我只需 1 个连接即可完成我想要的操作..

附:对不起我的英语不好..

【问题讨论】:

  • 是的,但是这样做会消耗数据库上的资源,并且打开连接的最大数量有限制。

标签: java mysql database jdbc


【解决方案1】:

连接不是线程安全的,所以只使用一个是充满危险的。你应该使用一个连接池,每个逻辑活动都有一个新的逻辑连接。

【讨论】:

    【解决方案2】:

    您可以在同一上下文中重用连接。更改上下文后,应关闭前一个连接并重新打开另一个连接。

    【讨论】:

    • 定义“上下文”。你还没有提到线程安全。答案真的只是华夫饼。
    【解决方案3】:

    您应该始终关闭 JDBC 连接等资源。如果你不关闭它们,它会创建一个resource leak,它会减慢你的程序。

    【讨论】:

      【解决方案4】:

      始终建议关闭连接,因为它不是线程安全的。也不建议将连接对象保持为单例。

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 2013-03-04
        • 2019-06-22
        • 1970-01-01
        • 2020-11-22
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 2013-04-12
        相关资源
        最近更新 更多