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                     else
11                     {
12                         this.txtName.Text = dr["Name"].ToString();
13                     }
14                     if (dr["Subject"] is DBNull)
15                     {
16                         this.txtSubject.Text = "";
17                     }
18                     else
19                     {
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                     else
29                     {
30                         this.txtGrade.Text = dr["Grade"].ToString();
31                     }
32                 }

 

你可能感兴趣的:(SQL Server中的NULL和.NET中的DBNULL以及面向编程语言中的NULL的区别)