我正在使用SQLDataReader将列数据插入字符串[]。
但是,某些列值为null。我有点不确定如何检查这个,因为当我做reader [column_pos]时它表示值为“n / a”。
我可以执行哪些检查以便执行以下操作:
for(int i=0; i<myarray.Length;i++){
if(something){
myarray[i] = reader[i];
}
else
{
myarray[i] = "";
}
}
并在列中出现空值时插入空白符号。
答案 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];