【发布时间】:2017-11-24 02:50:07
【问题描述】:
休息并重新查看代码后,我发现了错误。请参阅答案。谢谢您的帮助。
剩下的问题:
- 为什么它没有在大多数数字上给我一个例外? // 我无法看到结果。我只知道其他人没有例外。
- 为什么 DataSetDesigner 将该整数(数据库)转换为生成的类中的字符串?
我正在使用 Visual Studio 2017 / Oracle DataSet Designer 在我的应用程序中获取代表我的数据库的类。由于 Oracle 不支持 Visual Studio 2017,但我使用 Visual Studio 2015 来生成我的 .xsd 数据集。
使用下面的代码,我收到一条奇怪的异常消息。
For Each numberRow As myOracleDataSet.CustomerTelNumberRow In numberTbl.Select("customerID = " & row.CustomerID)
// Some more code
Next
System.InvalidArgumentException:
Range 对象中的最小值 (551) 必须小于或等于最大值 (-1)。
分离我发现的In-clause,异常发生在DataTable.Select调用上。
CutomerID 是数据集设计者提供的String-Property,在选择之前检查了DBNULL。如果DataSet.Select 与"1=1" 或"CustomerID = CustomerID" 一起执行,则代码可以正常工作。我还检查了 CustomerID 的值,发现当给定CustomerID is 250 时发生异常。使用硬编码 250 而不是 row.CustomerID 给了我同样的例外。所以它可能与我表中的数据有关。我能做些什么呢?
我的字符串语法应该是正确的,因为它适用于其他 ID,并且 .Select-Method 不是我自己生成的。
我在 MSDN support.microsoft.com 上发现了几乎相同的异常,但那里说它仅适用于 .NET Framework 3.5-based applications。我的应用程序正在使用 .NET Framework 4.5.2 。
【问题讨论】:
标签: .net vb.net select datatable invalidargumentexception