Oracle ResultSet.getString(“colname”)返回字符串“null”而不是java null

时间:2013-05-29 15:55:59

标签: java oracle jdbc

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

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

    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

2 个答案:

答案 0 :(得分:7)

请注意,null对象在转换为字符串时会打印为&#34; null&#34;。你实际上并没有在任何地方检查无效。

尝试添加

if (addrline2 == null) {
    System.out.println("It's null!")
}

答案 1 :(得分:1)

rs.getString(“addressLine2”)仅返回null,但是当你执行

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

将其打印为字符串文字

这样做

  System.out.println("addrLine2->"+addrline2!=null ? addrline2 : "Its null"+"<-");