簡體   English   中英

java關閉連接怎么寫?

[英]how to write java close connection?

我有 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);
 }                                       

您需要在finally塊中執行此操作,以便無論操作是否成功都執行它(拋出異常):

connection.close();

或者更簡單 - 使用try-with-resources 然后寫:

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

這樣您就不必擔心關閉資源了。

從 java 1.7 版開始,您可以使用try-with-resources如下:

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

它會被java自動關閉。

Java 中的安全模式是在完成后在finally塊中關閉ResultSetStatementConnectionResultSet順序),如下所示:

Connection 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 */}
    }
}

有關更多信息,請查看此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM