VB.NET中如何使用SuppressGetDecimalInvalidCastException解决Oracle数据转换异常
VB.NET读取Oracle数据时"指定的转换无效"错误处理
我使用VB.NET从Oracle数据库获取数据,简化代码如下:
strQuery = "Select 2.3, 2.3/1, 2.3/3.1 From Owner.TableName Where ROWNUM < 10" Dim da As OracleDataAdapter da = New OracleDataAdapter(strQuery, ConnectionString) da.Fill(GetData)
执行时出现**"指定的转换无效"**错误,经排查是2.3/3.1这一计算语句导致的。
从相关技术资料了解到,该问题源于Oracle数值精度高于.NET能处理的范围,解决方案是在OracleDataAdapter中启用SuppressGetDecimalInvalidCastException属性,但实际操作中遇到以下问题:
- 自动转换的C#代码报错:
CS0117: OracleDataAdapter不包含SuppressGetDecimalInvalidCastException的定义 - 按建议编写的VB代码同样报错:
BC30456: SuppressGetDecimalInvalidCastException不是'OracleDataAdapter'的成员
VB代码示例:
Dim table = New DataTable() Dim connection = New OracleConnection(ConnectionString) Dim cmd = New OracleCommand(strQuery, connection) Dim adapter = New OracleDataAdapter(cmd) With {.SuppressGetDecimalInvalidCastException = True} adapter.Fill(GetData)
补充信息:当前使用的是Oracle.ManagedDataAccess 19.6版本,无法安装21.9.0版本,提示该包与.NET Framework 4.5不兼容。
内容的提问来源于stack exchange,提问作者lvdp
相关产品推荐
相关产品推荐

