首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

java.lang.NullPointerException 是資料庫問題嗎?堆疊分析與排查

     編輯:程式設計綜合問答

堆疊關鍵行

at com.wgh.tools.ConnDB.executeQuery(ConnDB.java:56)
at com.wgh.dao.DiaryDao.queryDiary(DiaryDao.java:28)

判斷邏輯

NPE 發生在 executeQuery 第 56 行,通常是 Connection 或 Statement 為 null。**這不是資料庫本身的錯誤**,而是 Java 程式碼未正確處理連線失敗或資源為 null 的情況。

排查步驟

  1. 打開 ConnDB.java:56 確認哪個物件為 null(conn、stmt、rs)。
  2. 檢查 getConnection() 實作:是否捕獲 SQLException 並回傳 null?是否印出錯誤日誌?
  3. 驗證資料庫服務狀態、連線字串、帳號密碼、防火牆。
  4. 在 executeQuery 入口加入 if (conn == null) throw new SQLException("conn is null"); 讓錯誤更明確。

修正範例

public ResultSet executeQuery(String sql) throws SQLException {
    Connection conn = getConnection();
    if (conn == null) throw new SQLException("Connection is null, check getConnection()");
    try (Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery(sql)) {
        return rs; // 注意:try-with-resources 會關閉 stmt/rs,這裡需調整為手動管理或複製資料
    }
}

實際專案建議:DAO 層回傳 List<Entity> 而非 ResultSet,在 finally 關閉所有資源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved