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

时间:2016-01-05 20:05:31

标签: c# ado.net

我正在使用SqlDataReader来读取数据

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

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

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

  

数据是空的。无法在Null值上调用此方法或属性。

令人惊讶的是数据可用。

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

2 个答案:

答案 0 :(得分:3)

MSDN says

  

在调用此方法之前,调用IsDBNull检查空值。

这意味着该方法不会保护您的代码不受行/字段中空值的影响

var singleColumn = [234, -23, 45, 109];
for (var i = 0; i < singleColumn.length; i++) {
    singleColumn[i] = [singleColumn[i], i];
}

当然这假设你想要一个空字符串,以防你的字段为空,如果不是这样,那么你可以在条件运算符的真实部分放置你喜欢的任何东西,或抛出你自己的异常。

答案 1 :(得分:1)

您可以使用以下任一方法检查该值是否为null并正确处理:

if (reader.IsDBNull(1))

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