2012-06-26 86 views
1

我正在使用SQLDataReader将列数据插入到字符串[]中。SQLDataReader如何检查空列值?

但是,某些列值为空。我有点不确定如何检查这一点,因为当我做读者[column_pos]它说价值是“不适用”。

我可以进行哪些检查,这样我可以这样做:

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

,并插入一个空白刺痛whenver有在列空。

回答

11

您可以使用IsDBNull

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

    } 
} 
3

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

对于C#,你也可以使用的if/else速记:

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

翻译为:如果读者值为DBNULL,使用"",否则读者使用值。

0

SqlDataReader class拥有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]; 
} 
0
myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];