用java写一个数据库连接未关闭例子
时间: 2023-07-20 20:19:37 浏览: 89
以下是一个Java数据库连接未关闭的例子,假设我们要写一个程序,从MySQL数据库中读取数据并输出到控制台中:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBExample {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.createStatement();
String sql = "SELECT * FROM users";
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println(id + "\t" + name + "\t" + email);
}
// 数据库连接、语句和结果集没有关闭
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close(); // 关闭结果集
}
if (stmt != null) {
stmt.close(); // 关闭语句
}
if (conn != null) {
conn.close(); // 关闭连接
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上面的代码中,数据库连接、语句和结果集没有关闭,这会导致在此程序执行期间,数据库连接一直占用着系统资源,造成系统资源的浪费。
为了避免这种情况的发生,在程序中应该及时关闭已经打开的数据库连接、语句和结果集,在finally块中添加相应的关闭语句,例如`rs.close();`、`stmt.close();`和`conn.close();`等语句来关闭数据库资源。这样即使程序出现异常或在执行时发生错误,数据库连接也能够被正确地关闭,不会一直占用系统资源。
阅读全文