java裏對數據庫中NULL的處理

Java是面向對象的高級語言。java中,null表示類或對象的變量是空,不代表任何對象或實例,可以將null賦給引用類型變量,但不可以將null賦給基本類型變量;任何對象在沒有進行初始化時,它默認的值都是null。沒有實體的對象稱爲空對象;空對象不能使用,即不能讓一個空對象去調用方法產生行爲;大名鼎鼎的NullPointerException就是因爲應用程序試圖在需要對象的地方使用null時拋出來的。例如下面這樣的使用便會拋出NullPointerException異常:
String str = null;
System.out.println(str.toString());


有許多問題的答案我們並不知曉,我們被巨大的未知領域包圍着。在數據庫中“未知的”這個概念用NULL表示;NULL在數據庫表示未知。NULL不等於零或空格。NULL 值不視作大於、小於或等於任何其它值。當一個變量、列或常量具有NULL值時,它的值是未知的、不確定的。“未知的”與空白或零或布爾值FALSE完全不同。“未知的”意味着該變量根本沒有值,因此不能與其他變量直接進行比較。
NULL值具有以下三個規則:
(1)一個NULL不與其他任何值相等;一個NULL不與其他任何值不等;
(2)在對一個NULL值應用函數時,一般都會得到一個NULL值作爲結果。
(3)一般而言,只要執行涉及一個或多個NULL值的比較操作,那個比較的結果也是NULL值,它不同於TRUEFALSE,因而這樣的比較除了失敗,沒有任何幫助作用。
在數據庫中我們可以通過特定的關鍵字得到NULL
例如:有如下結構的表employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date)其中minit列可以爲NULL。可以使用IS NULLIS NOT NULL關鍵字。
SELECT * FROM employee WHERE employees IS NOT NULL
SELECT * FROM employee WHERE employees IS NULL

java不同的是數據庫中可以將NULL賦給任何數據類型。這樣一來,我們從數據庫中讀取字段的值後,在java程序中如何判斷讀取的值是否爲null呢?用name==null嗎?顯然不行,==是判斷兩個變量或實例是不是指向同一個內存空間,除非這個nameString類型的。而equals()方法呢?是判斷兩個變量或實例所指向的內存空間的值是不是相同。

java.sql.ResultSet接口中的boolean wasNull()方法可以解決這個問題:
boolean wasNull():報告最後一個讀取的列是否具有值 SQL NULL。注意,必須首先對列調用一個獲取方法嘗試讀取其值,然後調用wasNull ()方法查看讀取的值是否爲 SQL NULL。如果發生數據庫訪問錯誤將拋出SQLException
如:Java代碼

String value="";  
int n;  
while(rs.next()){  
value=rs.getString("name");  
if(rs.wasNull()){  
System.out.println("null");  
}else{  
System.out.println(value);  
}  

n=rs.getInt("number");  
if(rs.wasNull()){  
System.out.println("null");  
}else{  
System.out.println(n);  
}  
發佈了28 篇原創文章 · 獲贊 24 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章