0

编辑:对 addrline2 (addrline2 == null) 的后续检查显示 addrline2 实际上是 null,打印出 null 对象导致字符串“null”进入标准输出。

我正在使用带有 Oracle 11g 数据库的 Oracle 11g 瘦客户端。查询包含 null 的列时,getString("colname") 将返回字符串“null”而不是 Java 空值。这是预期的行为吗?Javadoc 表明我应该收到一个 Java 空值。

    ResultSet rs = descStatement.executeQuery();

    rs.next();
    String addrline2 = rs.getString("addressLine2");
    System.out.println("addrLine2->"+addrline2+"<-");

    boolean wasNull = rs.wasNull();
    System.out.println("Wasnull: "+wasNull);

输出:

addrLine2->null<-
Wasnull: true
4

2 回答 2

7

请注意,当转换为字符串时,null 对象打印为“null”。您实际上并没有在任何地方检查是否为空。

尝试添加

if (addrline2 == null) {
    System.out.println("It's null!")
}
于 2013-05-29T16:00:26.493 回答
1

rs.getString("addressLine2") 只返回 null 但是当你这样做时

System.out.println("addrLine2->"+addrline2+"<-");

将 null 打印为字符串文字

像这样做

  System.out.println("addrLine2->"+addrline2!=null ? addrline2 : "Its null"+"<-");
于 2013-05-29T16:03:46.680 回答