我有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);
}
答案 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
块的顺序关闭Connection
,finally
和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 */}
}
}
,像这样的东西:
<div class="container" id="app">
<articles></articles>
</div>
有关更多信息,请检查this link