SQLDataReader如何检查空列值?

时间:2012-06-26 09:52:37

标签: c# .net ado.net sqlclient

我正在使用SQLDataReader将列数据插入字符串[]。

但是,某些列值为null。我有点不确定如何检查这个,因为当我做reader [column_pos]时它表示值为“n / a”。

我可以执行哪些检查以便执行以下操作:

for(int i=0; i<myarray.Length;i++){
    if(something){
        myarray[i] = reader[i];
    }
    else
    {
        myarray[i] = "";
    }
}

并在列中出现空值时插入空白符号。

4 个答案:

答案 0 :(得分:11)

您可以使用IsDBNull

for(int i=0; i<myarray.Length;i++){
    if(reader.IsDBNull(i)){
        myarray[i] = "";
    }
    else
    {
        myarray[i] = reader[i];

    }
}

答案 1 :(得分:3)

您也可以使用if (reader[0] == DBNull.Value)。如果您可以控制运行的查询,则可以使用SQL ISNULL(field, default_value)函数来确保该列返回值。

对于C#,你也可以使用if / else简写:

myArray[i] = (reader[i] == DBNull.Value) ? "" : reader[0];

转换为:如果读者值为DBNULL,请使用"",否则请使用读者值。

答案 2 :(得分:0)

SqlDataReader类具有IsDBNull属性。

您可以编写如下代码:

for(int i=0; i<myarray.Length;i++){
    if(myReader.IsDBNull(i)){
        myarray[i] = "";
    }
    else
    {
        myarray[i] = reader[i];

    } }

或更好:

for(int i=0; i<myarray.Length;i++){
      myarray[i] = reader.IsDBNull(i) ? "" : reader[i];
}

答案 3 :(得分:0)

myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];