【问题标题】:SQLDataReader how to check for null column values? [duplicate]SQLDataReader 如何检查空列值? [复制]
【发布时间】:2012-06-26 09:52:37
【问题描述】:
我正在使用 SQLDataReader 将列数据插入字符串[]。
但是,某些列值为空。我有点不确定如何检查这一点,因为当我执行 reader[column_pos] 时,它说该值为“n/a”。
我可以执行哪些检查,以便我可以执行以下操作:
for(int i=0; i<myarray.Length;i++){
if(something){
myarray[i] = reader[i];
}
else
{
myarray[i] = "";
}
}
当列中有空值时插入一个空白字符串。
【问题讨论】:
标签:
c#
.net
ado.net
sqlclient
【解决方案1】:
您可以使用IsDBNull
for(int i=0; i<myarray.Length;i++){
if(reader.IsDBNull(i)){
myarray[i] = "";
}
else
{
myarray[i] = reader[i];
}
}
【解决方案2】:
您也可以使用if (reader[0] == DBNull.Value)。如果您可以控制查询的运行,您也可以使用 SQL ISNULL(field, default_value) 函数来确保列返回值。
对于 C#,您还可以使用 if/else 简写:
myArray[i] = (reader[i] == DBNull.Value) ? "" : reader[0];
这意味着:如果读者值为DBNULL,则使用"",否则使用读者值。
【解决方案3】:
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];
}
【解决方案4】:
myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];