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

Java 從 MySQL 查詢存入 ArrayList 遇到 null 值導致異常的解決辦法

     編輯:程式設計綜合問答

問題描述

使用 JDBC 從 MySQL 讀取 INT 欄位資料存入 ArrayList<Integer> 時,若資料庫欄位為 NULL,直接 rs.getInt() 會回傳 0,但若使用 rs.getObject() 並轉型為 Integer,則會得到 null,導致加入 ArrayList<Integer> 時拋出 NullPointerException(因自動拆箱)。

錯誤程式碼示例

List<Integer> list = new ArrayList<>();
while (rs.next()) {
    Integer val = (Integer) rs.getObject("score"); // 可能為 null
    list.add(val); // 若 val 為 null,自動拆箱時拋 NPE
}

解決方案

  1. 判斷後再加入:
    Object obj = rs.getObject("score");
    if (obj != null) list.add((Integer) obj);
    else list.add(0); // 或預設值
    
  2. 使用 rs.getInt() 並配合 wasNull():
    int val = rs.getInt("score");
    if (rs.wasNull()) list.add(0);
    else list.add(val);
    
  3. 資料庫層面設定預設值:修改表結構 ALTER TABLE t MODIFY score INT DEFAULT 0;,確保不會出現 NULL。

最佳實務建議

建議採用方案 2,語意清晰且效能最佳;同時在資料庫設計階段即為數值欄位設定 NOT NULL DEFAULT 0,從源頭杜絕問題。

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