一尘不染

SQL数据读取器-处理空列值

c#

我正在使用SQLdatareader从数据库构建POCO。该代码有效,除非它在数据库中遇到空值。例如,如果数据库中的“名字”列包含空值,则将引发异常。

employee.FirstName = sqlreader.GetString(indexFirstName);

在这种情况下处理空值的最佳方法是什么?


阅读 281

收藏
2020-05-19

共1个答案

一尘不染

您需要检查IsDBNull

if(!SqlReader.IsDBNull(indexFirstName))
{
  employee.FirstName = sqlreader.GetString(indexFirstName);
}

这是检测和处理这种情况的唯一可靠方法。

我将这些东西包装到扩展方法中,如果该列确实是,则倾向于返回默认值null

public static string SafeGetString(this SqlDataReader reader, int colIndex)
{
   if(!reader.IsDBNull(colIndex))
       return reader.GetString(colIndex);
   return string.Empty;
}

现在您可以这样称呼它:

employee.FirstName = SqlReader.SafeGetString(indexFirstName);

而且您再也不必担心出现异常或null值了。

2020-05-19