我正在使用SQLDataReader将列数据插入到字符串[]中。
但是,某些列值为 null。我有点不确定如何检查这一点,因为当我做阅读器[column_pos]时,它说值为"n/a"。
我可以执行哪些检查,以便我可以执行以下操作:
for(int i=0; i<myarray.Length;i++){
if(something){
myarray[i] = reader[i];
}
else
{
myarray[i] = "";
}
}
并在列中存在空值时插入空白刺痛。
您可以使用 IsDBNull
for(int i=0; i<myarray.Length;i++){
if(reader.IsDBNull(i)){
myarray[i] = "";
}
else
{
myarray[i] = reader[i];
}
}
使用 if (reader[0] == DBNull.Value)
.如果可以控制查询运行,也可以使用 SQL ISNULL(field, default_value)
函数来确保列返回值。
对于 C#,您还可以使用 if/else 速记:
myArray[i] = (reader[i] == DBNull.Value) ? "" : reader[0];
翻译为:如果读取器值为 DBNULL
,则使用 ""
,否则使用读取器值。
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];
}
myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];