錯誤堆疊:java.lang.NullPointerException at org.apache.jsp.index_jsp._jspService(index_jsp.java:114),第 114 行對應 while(rs.next())。
JDBConnection.executeQuery 方法:
public ResultSet executeQuery(String sql) {
ResultSet rs = null;
try {
// ...
rs = stmt.executeQuery(sql);
return null; // 錯誤:應返回 rs
} catch (SQLException e) { }
return rs;
}
成功執行查詢後返回了 null,導致 JSP 中 rs 為 null,調用 next() 拋 NPE。
public ResultSet executeQuery(String sql) {
try {
if (con == null) creatConnection();
Statement stmt = con.createStatement();
return stmt.executeQuery(sql); // 直接返回
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
<%
ResultSet rs = connection.executeQuery(sql);
if (rs != null) {
try {
while (rs.next()) { ... }
} finally {
try { rs.close(); } catch (SQLException ignore) {}
}
}
connection.closeConnection();
%>
creatConnection 失敗仍返回 true,應拋異常或返回 false。closeConnection 判斷 if (con == null) 邏輯反了,應 if (con != null)。finally 中關閉,建議使用 Try-with-resources (Java 7+)。修復返回值邏輯並加強資源管理,消除 NPE 與連接洩漏。