SQL Server中的NULL和.NET中的DBNULL以及面向编程语言中的NULL的区别

来源:转载

阅读目录

一: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 }

 


分享给朋友:
您可能感兴趣的文章:
随机阅读: