java如何写关闭连接?

时间:2019-04-08 09:02:42

标签: java

我有2个以上的类,它们使用try-catch单独实现了连接,但是当我尝试关闭主连接时,由于在try-catch中有作用域,它无法正常工作。 我的问题是在使用try-catch块时如何关闭连接?

这是我其中一个班级的代码

String query="INSERT INTO branch (branch_Num , Street, Nieghbourhood,city) VALUES (?, ?,?, ?)";

try{
    PreparedStatement ps;
    String f="jdbc:derby://localhost:1527/coffeeZone";
    connection = DriverManager.getConnection(f, "coffee", "1234"); 
    ps=connection.prepareStatement(query);
    ps.setString(1, bno);
    ps.setString(2, strt);
    ps.setString(3, nbh);
    ps.setString(4, ci);
    if (ps.executeUpdate()>0){
        JOptionPane.showMessageDialog(null, "Complete! a new branch is added !");
    }else
    {
        JOptionPane.showMessageDialog(null, "");
    }       
 } catch (SQLException ex) {
    JOptionPane.showMessageDialog(null,ex);
 }                                       

3 个答案:

答案 0 :(得分:4)

您需要在finally块中执行此操作,以便无论操作是否成功(抛出异常)都将执行它:

connection.close();

或更简单-使用try-with-resources。然后写:

try (Connection connection = DriverManager.getConnection(f, "coffee", "1234")) {
    ...
}

那么您不必担心关闭资源。

答案 1 :(得分:3)

从Java 1.7版开始,您可以按以下方式使用 try-with-resources

    String f = ...
    try (Connection connection = DriverManager.getConnection(f, "coffee", "1234")) {
        ...
    } catch (SQLException ex) {
        ...
    }

,它将由Java自动关闭。

答案 2 :(得分:1)

Java中的安全模式是在完成ResultSet块后,按Statement块的顺序关闭ConnectionfinallyConnection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // Do stuff ... } catch (SQLException ex) { // Exception handling stuff ... } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { /* ignored */} } if (ps != null) { try { ps.close(); } catch (SQLException e) { /* ignored */} } if (conn != null) { try { conn.close(); } catch (SQLException e) { /* ignored */} } } ,像这样的东西:

<div class="container" id="app">
    <articles></articles>
</div>

有关更多信息,请检查this link