使用带有null的SqlDataReader填充DataGrid

时间:2017-06-02 09:36:59

标签: c# wpf datagrid sqldatareader

我使用 SqlDataReader 在while循环中将数据库行写入 DataGrid (而不是因内存问题而绑定SqlDataReader或DataTable),但在SqlDataReader时收到null异常点击一个空字段。我曾尝试过无效的??运算符。是否有更简单或更优雅的方式,而不是在if-else语句中检查每个返回值?

while (sqlDataReader.Read()) 
{
   myDataGrid.Items.Add(new DataItem
   {
       Column01 = rdr.GetInt32(0) ?? "EMPTY",
   }); 
}

2 个答案:

答案 0 :(得分:1)

在列上调用IsDBNull将允许您检查空值:

Column01 = rdr.IsDBNull(0) ? "EMPTY" : rdr.GetInt32(0).ToString();

答案 1 :(得分:1)

这是一个解决方案,实现为可重用的方法扩展

public static Int32 GetInt32(this IDataRecord dr, int index, Int32 @default)
{
   object obj = dr[index];
   if (null == obj || obj is DBNull) return @default;

   return dr.GetInt32(index);
   //return Convert.ToInt32(obj);//alternatively
}

理想情况下,您可以自行为所有相关类型添加方法。 @default可用于指定哪个值应出现在NULL情况中。