.net DataReader:指定的强制转换无效(Int32)
为什么SqlDataReader在将0转换为整数时引发异常.net DataReader:指定的强制转换无效(Int32),.net,sqldatareader,datareader,.net,Sqldatareader,Datareader,为什么SqlDataReader在将0转换为整数时引发异常 ?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.Collection
?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()}
这不是一个皈依者,而是一个演员。同:
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));