我正在使用 c# .net 2 (Visual Studio 2005 SP1) 尝试使用来自 Oracle10g 数据库中的 select * from 表的结果填充数据集。无法在此客户端站点更改.net 框架、IDE 和数据库。
我正在使用ODP.net 提供程序连接,dll 版本是2.102.2.20
当我运行填充命令时,我得到一个异常:
算术运算导致溢出
此外,如果我尝试在 Visual Studio 设计器(显示表数据)中查看有问题的列,我会得到对于表中该列的每一行。如果我的查询选择其他具有整数的列,例如省略此列,则该代码将完美运行。
当我从 Toad 在数据库中查看有问题的列时,它看起来很好,数据如下所示:
919.742866695572
我需要精度,因为它是蒙特卡罗模拟所需的。
如果我不使用数据适配器来填充数据表,而是使用数据读取器并调用 dataReader.getValue(columnIndex) 我会得到相同的错误,但是如果我调用 dataReader.GetOracleDecimal(columnIndex) 那么我会得到我正在寻找的结果,没有错误.
我宁愿使用数据适配器并填充数据集(注意这些是无类型数据集,因为我无法从 oracle db 中获取自动生成的强类型数据集)。我不想使用 datareader 并遍历结果(选择列值),因为我试图将其编写为适用于许多场景的通用方法,无论列数如何,十进制列的索引需要特定按数据类型获取调用。
任何人都可以帮忙吗?我可以使用新版本的 ODP.net dll 连接到旧的Oracle10g数据库吗?我想知道这是否会有所帮助。
谢谢