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

2014-11-24 08:26:02 · 作者: · 浏览: 3

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键,可将该单元格变成“空值”。 www.2cto.com
  

  我们新创建一行,只给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 { www.2cto.com
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 } www.2cto.com
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 }
作者 从小就犯困