閱讀目錄
一:SQL Server中的NULL和.NET中的DBNULL以及面向程式設計語言中的NULL的區別
二:執行個體
一:SQL Server中的NULL和.NET中的DBNULL以及面向程式設計語言中的NULL的區別
1:SQL Server中的NULL
SQL Server中的空值用“NULL“表示,等同於“沒有輸入的值”,在T-SQL命令中,判斷一個值是不是空值,要使用“IS NULL”,而不是使用“=NULL”,在SQL Server資料庫中的某個表插入一個新的行,新行中沒有輸入值的欄位都是“空值”,在SQL Server資料庫中的某個表的有數值的資料編輯地區,用Ctrl+0鍵,可將該儲存格變成“空值”。
我們新建立一行,只給Name這個欄位寫上“賈七”,會發現Subject欄位和後面的欄位都為“NULL”。
2:.NET中的DBNULL
ADO.NET資料提供者從資料庫中擷取資料時,在欄位沒有有效值時,也就是上面所說的“NULL”,會自動分配為DBNULL值,所以SQL Server中的NULL等同於.NET中的DBNULL。
在.NET中,DBNULL類型是一個單獨的類,表示未初始化的變數或者不存在的資料庫列。
3:面向程式設計語言中的NULL
面向程式設計語言中的NULL表示不存在某個對象的引用,所以SQL Server中和C#中的NULL是完全不相同的。
舉例
已一個學生為例子,age年齡資料的值是NULL時,並不代表這個學生沒有年齡,每個人都會有年齡,而是尚未設定或者還不知道而已,聲明一個可以為空白的年齡變數如下
int? age = null;
二:執行個體
1 SqlConnection conn = SqlHelper.GetConnection(Convert.ToInt16(CustomEnum.DBCallType.其他庫)); 2 string sqlText = "SELECT * FROM NameAndSubjectAndGrade WHERE ID = 15"; 3 SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.Text, sqlText); 4 if (dr.Read()) 5 { 6 if (dr["Name"] is DBNull) 7 { 8 this.txtName.Text = ""; 9 }10 else11 {12 this.txtName.Text = dr["Name"].ToString();13 }14 if (dr["Subject"] is DBNull)15 {16 this.txtSubject.Text = "";17 }18 else19 {20 this.txtSubject.Text = dr["Subject"].ToString();21 }22 if (dr["Grade"] is DBNull)23 {24 this.txtSubject.Text = "";25 //也可以寫成如下方式,DBNULL是可以轉化為String類型的,轉化後的值為""26 this.txtSubject.Text = dr["Grade"].ToString();27 }28 else29 {30 this.txtGrade.Text = dr["Grade"].ToString();31 }32 }