Oracle ResultSet.getString(";colname";)返回字符串;空";而不是java null

Oracle ResultSet.getString(";colname";)返回字符串;空";而不是java null,java,oracle,jdbc,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.exec

编辑:随后检查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);
ResultSet rs=descStatement.executeQuery();
rs.next();
字符串addrline2=rs.getString(“addressLine2”);

System.out.println(“addrLine2->”+addrLine2+”请注意,空对象在转换为字符串时打印为“null”。实际上,您并没有在任何地方检查空值

尝试添加

if (addrline2 == null) {
    System.out.println("It's null!")
}
rs.getString(“addressLine2”)仅返回null,但当您返回null时

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

System.out.println(“addrLine2->”+addrLine2+“”+addrLine2!=null?addrLine2:“它的null”+”你确定列中的值不是“null”吗?你有任何类型的数据库浏览器可以确定吗?是的,试试
+(addrLine2==null)+
。String+调用String.valueOf(…)你是正确的。我得到了一个Java null。谢谢。(我使用的是spring的BeanPropertyRowMapper,它将字符串属性设置为“null”,因此当我看到null打印输出时,我认为我是从驱动程序中得到了“null”,而是Java null对象的toString()。谢谢。
System.out.println("addrLine2->"+addrline2+"<-");
  System.out.println("addrLine2->"+addrline2!=null ? addrline2 : "Its null"+"<-");