我使用SQLdatareader从数据库构建poco。除非在数据库中遇到空值,否则代码可以正常工作。例如,如果数据库中的FirstName列包含空值,则抛出异常。

employee.FirstName = sqlreader.GetString(indexFirstName);

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


当前回答

和/或使用赋值的三元运算符:

employee.FirstName = rdr.IsDBNull(indexFirstName))? 
                     String.Empty: rdr.GetString(indexFirstName);

替换每个属性类型的默认值(当为空时)…

其他回答

你也可以检查这个

if(null !=x && x.HasRows)
{ ....}

我想你会想用:

SqlReader.IsDBNull(indexFirstName)

整洁的小笑话:

    while (dataReader.Read())
{
    employee.FirstName = (!dataReader.IsDBNull(dataReader.GetOrdinal("FirstName"))) ? dataReader["FirstName"].ToString() : "";
}

在尝试读取它之前检查sqlreader.IsDBNull(indexFirstName)。

一种方法是检查db是否为null:

employee.FirstName = (sqlreader.IsDBNull(indexFirstName) 
    ? ""
    : sqlreader.GetString(indexFirstName));