📅  最后修改于: 2023-12-03 15:02:07.367000             🧑  作者: Mango
在使用 JDBC 进行数据库操作时,会遇到各种可能的异常情况。例如:数据库连接失败、SQL 语句错误、数据库表不存在等等。为了保证程序的健壮性,我们需要合理处理这些异常。
JDBC 的异常处理方式主要有以下几种:
在进行数据库操作时,可以使用 try-catch-finally 语句来捕获并处理可能发生的异常。
try {
// 获取数据库连接
Connection conn = DriverManager.getConnection(url, username, password);
// 创建 Statement 对象
Statement stmt = conn.createStatement();
// 执行 SQL 语句
String sql = "SELECT * FROM student";
ResultSet rs = stmt.executeQuery(sql);
// 处理查询结果集
while(rs.next()) {
// 输出查询结果
System.out.println(rs.getInt("id") + " " + rs.getString("name"));
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
} catch(SQLException e) {
// 处理异常
e.printStackTrace();
} finally {
// 释放资源
}
Java 7 引入的 try-with-resources 语句可以自动关闭资源,避免在 finally 块中手动关闭。
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student")) {
while(rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
使用 try-with-resources 语句的好处是代码可读性更好,也不需要在 finally 块中手动关闭资源。
在一个应用程序中,可以统一处理所有的 JDBC 异常。这样可以减少代码重复,提高代码的可维护性。
public class JDBCUtil {
public static Connection getConnection() throws SQLException {
// 获取数据库连接
return DriverManager.getConnection(url, username, password);
}
// 关闭资源
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
然后在程序中使用 JDBCUtil
类获取数据库连接和关闭资源。
try {
Connection conn = JDBCUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM student");
while(rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace(); // 统一处理异常
} finally {
JDBCUtil.close(conn, stmt, rs); // 统一关闭资源
}
JDBC 中常见的异常类包括:
SQLException
表示一个数据库访问错误或者其它错误。
BatchUpdateException
表示在批处理时出现错误。
DataTruncation
表示插入或更新数据时,数据被截断。
SQLWarning
表示警告信息,不会停止程序执行。
JDBC 的异常处理是保证程序健壮性的一个重要环节。在代码中合理处理异常,可以提高程序的可读性和可维护性。同时,JDBC 中的异常类也需要了解,以便在处理异常时更加得心应手。