一聚教程网:一个值得你收藏的教程网站

热门教程

SQL中的NULL和.NET中的DBNULL以及面向编程语言中的NULL分析

时间:2022-06-29 08:15:53 编辑:袖梨 来源:一聚教程网

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

   二:实例

SqlConnection conn = SqlHelper.GetConnection(Convert.ToInt16(CustomEnum.DBCallType.其他库));
                 string sqlText = "SELECT * FROM NameAndSubjectAndGrade WHERE ID = 15";
                 SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.Text, sqlText);
                 if (dr.Read())
                 {
                     if (dr["Name"] is DBNull)
                     {
                         this.txtName.Text = "";
                     }
                     else
                     {
                         this.txtName.Text = dr["Name"].ToString();
                     }
                     if (dr["Subject"] is DBNull)
                     {
                         this.txtSubject.Text = "";
                     }
                     else
                     {
                         this.txtSubject.Text = dr["Subject"].ToString();
                     }
                     if (dr["Grade"] is DBNull)
                     {
                         this.txtSubject.Text = "";
                         //也可以写成如下方式,DBNULL是可以转化为String类型的,转化后的值为""
                         this.txtSubject.Text = dr["Grade"].ToString();
                     }
                     else
                     {
                         this.txtGrade.Text = dr["Grade"].ToString();
                     }
                 }

 

热门栏目