判断一个值是不是DBNull.Value

时间:2021-09-20 13:55:29

C#读取数据库返回DataTable,遍历 DataTable,

在DataRow dr, 假如dr[0]是一个可空的值类型的字段,那么要赋值给C#程序的一个值类型(可空类型变量这里不讨论)变量时,

可以这样判断dr[0]是不是DBNull:     

 int num=dr[0].Equals(DBNull.Value) ? 0 : Convert.ToInt32(dr[0]);

这样写使得代码简洁,易读,少一些if...else...

 

判断一个类型是不是DBNull.Value的方法如下:

  object obj = DBNull.Value;
            bool b = obj.Equals(DBNull.Value);
            if (b == true)
            {
                Console.WriteLine("obj is a DBNull");
            }
            else
            {
                Console.WriteLine("obj is not a DBNull");
            }
            Console.ReadKey();

 

总结了三种方法:

      while (dr.Read())//循环读取   
          {      
                    //第一种方法判断是不是DBNull.Value
                    int num1=dr.IsDBNull(0)?0:dr.GetInt32(0);

                    //第二种方法判断是不是DBNull.Value
                    int num2 = dr[1].Equals(DBNull.Value) ? 0 : Convert.ToInt32(dr[1]);

                    //第二种方法判断是不是DBNull.Value
                    int num3 = string.IsNullOrEmpty(dr[2].ToString()) ? 0 : Convert.ToInt32(dr[2]); 
          }