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]); }