经过休息和重新查看代码后,我发现了错误。请参阅答案。感谢您的帮助。DataTable.Select上的System.ArgumentException(字符串)
问题留给:
- 为什么不给我上的最数的异常? //我无法看到结果。我只知道其他人没有例外。
- 为什么DataSetDesigner将该整数(datbase)转换为生成的类中的字符串?
我使用Visual Studio 2017年/ Oracle的DataSet设计让我的应用程序中的类,代表我的数据库。由于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:
敏(551)必须在一个Range对象小于或等于max(-1)。
分离的In
-clause我发现,有例外的DataTable.Select
呼叫occures。
CutomerID
是由数据集设计者给出的String-Property
,并且在选择之前检查了DBNULL
。如果DataSet.Select
与"1=1"
或"CustomerID = CustomerID"
执行代码工作正常。我还检查了CustomerID的值,发现异常发生时,给出CustomerID is 250
。使用硬编码的250而不是row.CustomerID给了我同样的例外。所以它可能与我的表格中的数据有关。我能对付它呢?
我的字符串语法应该是正确的,因为它适用于其他ID,并且.Select方法不是由我自己生成的。
我在MSDN support.microsoft.com上发现了几乎相同的例外情况,但它仅在.NET Framework 3.5-based applications
中表示。我的应用程序使用.NET Framework 4.5.2。
使用'MsgBox(numberTbl.Rows.Count)'我发现数据库给了我'747行'。查询似乎没问题。同样使用'.Select(“customerID =”&123123123123123)',其中最初有0行作为回报并不会给我任何例外。另外.Select不与数据库进行通信,而是与DataTable本身imo进行通信。 – Luke