[英]Why the retrieved result set string doesn't work with the .equals()
我正在從數據庫中檢索一些信息,我想檢查該值是否為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
}
請注意,數據庫沒有存儲任何數據。
正如“ Eran”所指出的那樣, code
的值可能是null
引用。 做,
if (code == null)
代替
if (code.equals("null")==true)
發生這種情況的可能是因為rs
對象在調用它的getString()
方法時返回null
。 當列值為SQL NULL時, ResultSet
將返回null
。 ( 參考 )
您的邏輯和語法是正確的。在這種情況下,您的數據庫值可能正在為代碼分配空值,並且您正在檢查字符串“ null”是否等於代碼。 這將導致錯誤,因為它是空引用。 確保您得到的是“ null”,否則,如果它為空,則檢查是否等於空格
它打印是。 所以我不認為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
}
1。
code
不能為空為code.equals()
會拋出一個NullPointerException
,因為你會從調用一個方法null
- >東西不存在。
2。
.equals()
區分大小寫,大多數數據庫將null存儲為NULL
,因此請使用code.equalsIgnoreCase("null")
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.