2012-04-12 24 views
7

SqlDataReader 0 को पूर्णांक में परिवर्तित करते समय अपवाद क्यों फेंकता है?डेटा रीडर: निर्दिष्ट कास्ट मान्य नहीं है (Int32)

?dataReader(3) 
0 {Short} 
    Short: 0 
?dataReader.GetInt16(3) 
0 
?dataReader.GetInt32(3) 
{"Specified cast is not valid."} 
    _HResult: -2147467262 
    _message: "Specified cast is not valid." 
    Data: {System.Collections.ListDictionaryInternal} 
    HelpLink: Nothing 
    HResult: -2147467262 
    InnerException: Nothing 
    IsTransient: False 
    Message: "Specified cast is not valid." 
    Source: "System.Data" 
    StackTrace: " at System.Data.SqlClient.SqlBuffer.get_Int32()  
        at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)" 
    TargetSite: {Int32 get_Int32()} 

उत्तर

22

यह एक कन्वर्ट नहीं है - यह एक कलाकार है। एक ही रूप में:

short x = 0; 
object y = x; 
int z = (int)y; // BOOM! InvalidCastException Specified cast is not valid. 

दोनों मामलों में, एक short एक int नहीं है।

प्रकार के बारे में अनिश्चित हैं, तो आप कोशिश कर सकते हैं:

int i = Convert.ToInt32(dataReader.GetValue(3));