第一次海报。我在这里享受了多年的帮助。感谢大家。
我的情况看起来不应该发生。
在 VS2017 社区中使用 VB.NET,我在 Try 块中获得了 System.Data.ConstraintException,我专门为该异常捕获了该异常。
消息如下所示:
System.Data.ConstraintException:'列'PAIR1,PAIR2,PAIR3'被限制为唯一。值“CHATBTC,ETHBTC,CHATETH”已经存在。
https://www.dropbox.com/s/d91rgtwsjwioqhm/SO_error.jpg?dl=0
正如您从逻辑中可以看出的那样,我指望触发异常,以便我可以构建一个包含唯一行的表并添加到我的重复行值中。随着表的大小增加,在 ADD 之前检查重复项会花费大量时间,因此这种方法是最快的。
它不会每次都发生,只有大约 30%。我的应用程序还不足以在生产中运行,所以我看到的一切都是在调试时。
我的代码在这里:
tblTriArbPairs.PrimaryKey = New DataColumn() {tblTriArbPairs.Columns("PAIR1"), tblTriArbPairs.Columns("PAIR2"), tblTriArbPairs.Columns("PAIR3")}
Try
tblTriArbPairs.Rows.Add(
Pairs(0), Pairs(1), Pairs(2),
idxPair0, idxPair1, idxPair2,
result.TD1, result.TD2, result.TD3,
CoinOnly(Pairs(0)), CurrOnly(Pairs(0)),
CoinOnly(Pairs(1)), CurrOnly(Pairs(1)),
CoinOnly(Pairs(2)), CurrOnly(Pairs(2)),
FindLoopCoin(CoinOnly(Pairs(0)), CurrOnly(Pairs(0)), CoinOnly(Pairs(1)), CurrOnly(Pairs(1)), CoinOnly(Pairs(2)), CurrOnly(Pairs(2))),
GetSymbolLIQ(Pairs(0)), GetSymbolLIQ(Pairs(1)), GetSymbolLIQ(Pairs(2))
)
RowsAdded += 1
Catch ex As System.Data.ConstraintException
DupRows += 1
Catch ex As Exception
Finally
End Try
填充表格后,我最终添加了 3480 行和 2640 个重复项。错误发生的时间没有一致性。有时马上,有时几乎在最后。
我已经查看了所有内容,但没有找到任何解决未捕获的 ConstraintException 的内容。其他例外,是的。
很感谢任何形式的帮助。希望我发布了一个好问题。:)