首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.ArgumentException on DataTable.Select(字符串)

System.ArgumentException on DataTable.Select(字符串)
EN

Stack Overflow用户
提问于 2017-06-21 09:26:59
回答 2查看 1.2K关注 0票数 1

休息一下,重新查看代码后,我发现了错误。见答案。谢谢你的帮助。

剩下的问题:

  • 为什么它没有在大多数数字上给我一个例外呢? //我没有看到结果。我只知道其他人都不例外。
  • 为什么DataSetDesigner将该整数(数据库)转换为生成类中的字符串?

我正在使用VisualStudio2017/ Oracle DataSet设计器在我的应用程序中获取表示我的数据库的类。由于Oracle不支持Visual 2017,但我使用Visual 2015生成我的.xsd DataSets。

使用下面的代码,我得到了一条奇怪的异常消息。

代码语言:javascript
复制
For Each numberRow As myOracleDataSet.CustomerTelNumberRow In numberTbl.Select("customerID = " & row.CustomerID)
    // Some more code
Next

System.InvalidArgumentException: Min (551)必须小于或等于范围对象中的最大值(-1)。

分离我找到的In-clause,即异常发生在DataTable.Select调用上。

CutomerID是dataset designer提供的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框架4.5.2。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-21 11:30:42

我终于解决了!

虽然Min (551) must be less than or equal to max (-1) in a Range object.在某种程度上混淆了消息,但System.InvalidArgumentException给了我正确的方向。这是些小事

CutomerID是数据集设计器提供的字符串属性。

这与numberTbl.Select("customerID = " & row.CustomerID)相结合才是实际的例外。虽然在大多数情况下,这种字符串=>整数比较在某种程度上起了作用,但对250没有起作用。CustomerID是两个表中的字符串属性。所以我在比较弦线和Int没有铸造它。

以下行修正,修正了它。

代码语言:javascript
复制
̶n̶̶u̶̶m̶̶b̶̶e̶̶r̶̶t̶̶b̶̶l̶̶.̶̶s̶̶e̶̶l̶̶e̶̶c̶̶t̶("̶c̶̶u̶̶s̶̶t̶̶o̶̶m̶̶e̶̶r̶̶i̶̶d̶̶ ̶=̶ ̶"̶ ̶&̶ ̶̶r̶̶o̶̶w̶̶.̶̶c̶̶u̶̶s̶̶t̶̶o̶̶m̶̶e̶̶r̶̶i̶̶d̶)
numberTbl.Select("customerID = '" & row.CustomerID & "'")

"CustomerID = 250"
"CustomerID = '250'"
票数 2
EN

Stack Overflow用户

发布于 2017-06-21 09:30:30

当数据库中没有返回的行时,这是准确的。

查询有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44672039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档