为什么检索到的结果集字符串不适用于.equals()

时间:2019-06-02 18:15:43

标签: java mysql

我正在从数据库中检索一些信息,我想检查该值是否为null。尽管从数据库检索的字符串为“ null”,但equals()返回false。

我尝试过trim(),以防万一检索到的字符串中有空格

     String code = product.retrieveCode();
            System.out.println("the code is :"+ code);

            if (code.equals("null")==true){  
                // do this 
            }
            else{
                //   do that
            }    

请注意,数据库没有存储任何数据。

4 个答案:

答案 0 :(得分:1)

正如'Eran'所指出的,code中的值可能是null引用。做

if (code == null)

代替

if (code.equals("null")==true)

这可能是由于rs对象在调用null方法时返回了getString()。当列值为SQL NULL时,ResultSet将返回null。 (Reference

答案 1 :(得分:1)

您的逻辑和语法是正确的。在这种情况下,您的数据库值可能正在为代码分配空值,并且您正在检查字符串“ null”是否等于代码。这将导致错误,因为它是空引用。确保您得到的是“ null”,否则,如果其为空,则仅检查是否等于空格并保留空白

答案 2 :(得分:0)

它打印是。所以我不认为Java做错了什么

String code = "null";
if (code.equals("null")){  
     System.out.println("Yes");
} else{
   //   do that
}

我认为这是一个空引用。请执行以下代码。

if (code==null){  
   System.out.println("Yes");
} else{
       //   do that
}

答案 3 :(得分:0)

1。

code不能为null,因为code.equals()会抛出NullPointerException,因为您将从null->调用不存在的方法。

2。

.equals()区分大小写,大多数数据库将空存储为NULL,因此请使用code.equalsIgnoreCase("null")