1

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

但是,某些列值为空。我有点不确定如何检查这一点,因为当我执行 reader[column_pos] 时,它说该值为“n/a”。

我可以执行什么检查,以便可以执行以下操作:

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

并在列中有空值时插入一个空白字符串。

4

4 回答 4

12

您可以使用IsDBNull

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

    }
}
于 2012-06-26T09:54:22.457 回答
3

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

对于 C#,您还可以使用 if/else 简写:

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

转换为:如果 reader 值为DBNULL,则使用"",否则使用 reader 值。

于 2012-06-26T09:58:11.547 回答
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];
}
于 2012-06-26T10:00:52.623 回答
0
myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];
于 2012-06-26T10:03:09.910 回答