在 ResultSet 中處理 NULL 值的方法有很多種,以下是一些建議:
ResultSet.wasNull()
方法:當你從 ResultSet 中讀取一個字段,而該字段的值為 NULL 時,這個方法會返回 true。你可以在讀取字段后調用此方法來檢查值是否為 NULL。ResultSet resultSet = statement.executeQuery("SELECT * FROM tableName WHERE id = 1");
if (resultSet.next()) {
String columnValue = resultSet.getString("columnName");
if (resultSet.wasNull()) {
System.out.println("The value is NULL");
} else {
System.out.println("The value is: " + columnValue);
}
}
ResultSet.isNull()
方法:這個方法也可以用來檢查字段值是否為 NULL。與 wasNull()
不同,isNull()
方法在字段值為 NULL 時返回 true,否則返回 false。ResultSet resultSet = statement.executeQuery("SELECT * FROM tableName WHERE id = 1");
if (resultSet.next()) {
String columnValue = resultSet.getString("columnName");
if (resultSet.isNull(columnIndex)) {
System.out.println("The value is NULL");
} else {
System.out.println("The value is: " + columnValue);
}
}
ResultSet.getXXX()
方法時,如果字段值為 NULL,這些方法將返回相應的默認值。例如,對于字符串類型,getString()
方法將返回 null。因此,在調用這些方法后,你可以使用 == null
檢查返回值是否為 NULL。ResultSet resultSet = statement.executeQuery("SELECT * FROM tableName WHERE id = 1");
if (resultSet.next()) {
String columnValue = resultSet.getString("columnName");
if (columnValue == null) {
System.out.println("The value is NULL");
} else {
System.out.println("The value is: " + columnValue);
}
}
COALESCE
或 IFNULL
函數將 NULL 值替換為其他值。這些函數在 SQL 查詢中使用,可以在將結果集映射到 Java 對象時處理 NULL 值。例如,假設你有一個名為 users
的表,其中有一個名為 email
的列,你可能希望將其值設置為 “unknown” 如果值為 NULL。你可以使用以下查詢:
SELECT id, COALESCE(email, 'unknown') AS email FROM users;
然后,在 Java 中處理結果集時,你可以像往常一樣讀取 email
列的值,而不必擔心 NULL 值。