SqlDataReader - 无法对 Null 值调用此方法或 属性

SqlDataReader - This method or property cannot be called on Null values

我正在使用SqlDataReader读取数据

SqlDataReader reader;
connection.Open();
...
...
reader = command.ExecuteReader();

while(reader.Read())
{
     var address = new Adress()
      { 
        House = reader.GetString(1)
      }

为什么 reader.GetString(1) 抛出错误

Data is Null. This method or property cannot be called on Null values.

令人惊讶的数据可用。

请让我知道我在这里做错了什么..

您可以使用以下任一方法检查该值是否为空并适当处理:

if (reader.IsDBNull(1))

if (reader["FieldName"] == DBNull.Value)

MSDN says

Call IsDBNull to check for null values before calling this method.

这意味着该方法无法保护您的代码免受 row/field

中空值的影响
 var address = new Adress()
 { 
    House = reader.IsDbNull(1) ? "" : reader.GetString(1),
    ....
 }

当然,这假定您需要一个空字符串以防您的字段为空,如果不是这种情况,那么您可以将您喜欢的任何内容放入条件运算符的真实部分或抛出您自己的异常。