2012-06-26 87 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];