我使用 SqlDataReader 在while循环中将数据库行写入 DataGrid (而不是因内存问题而绑定SqlDataReader或DataTable),但在SqlDataReader时收到null异常点击一个空字段。我曾尝试过无效的??
运算符。是否有更简单或更优雅的方式,而不是在if-else语句中检查每个返回值?
while (sqlDataReader.Read())
{
myDataGrid.Items.Add(new DataItem
{
Column01 = rdr.GetInt32(0) ?? "EMPTY",
});
}
答案 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情况中。