DataReader:指定的强制转换无效 (Int32)

Posted

技术标签:

【中文标题】DataReader:指定的强制转换无效 (Int32)【英文标题】:DataReader: Specified cast is not valid (Int32) 【发布时间】:2012-04-24 13:10:21 【问题描述】:

为什么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.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()

【问题讨论】:

【参考方案1】:

这不是一个皈依者——它是一个演员。同:

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));

【讨论】:

以上是关于DataReader:指定的强制转换无效 (Int32)的主要内容,如果未能解决你的问题,请参考以下文章

指定的强制转换无效错误

System.InvalidCastException:指定的强制转换无效。错误

在OptionSet属性的FetchXML查询中,System.InvalidCastException(“指定的强制转换无效。”)

Xamarin 形式:System.InvalidCastException:“指定的强制转换无效。”

指定的强制转换在 Xamarin 表单中无效

Linq 存储库模式“指定的强制转换无效”错误