判断为空的方法总结

1.在开发时常常碰到需要判断从数据库中取的值是否为空的情况

如果字段类型为字符串类型我们可以用

string test=dt.Rows[i]["columnName"].ToString();

if(!string.IsNullOrEmpty(test))

但是如果字段类型不为字符串,这样判断可能会有问题,数据库中的某列值返回要么是列值,要么为DBNull,所以不管任何类型的字段我们都可以用

if(test!=DBNull.value)

if(Convert.IsDBNull(test))

进行判断

补充:

DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是 可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。

2.赋空值

有时候我们要对一个变量进行初始化,需要赋空值,常用的有两种:

string  test=“”;

string  test1=string.Empty;

这两个都是空字符串,但本质上却有很大的区别:""表示一个字符串,字符串为空值,在数据库中占有实际的存储空间,在内存中也有准确的指向;而string.Empty(null)只是定义了一个string类的引用,不占用存储空间,在内存中也没有具体的指向,这样定义后不能直接使用还需要实例化才可以。

 

你可能感兴趣的:(数据库,String,object,null,存储)