首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕捉特定的OleDbException?

如何捕捉特定的OleDbException?
EN

Stack Overflow用户
提问于 2012-10-09 09:31:07
回答 4查看 6.8K关注 0票数 2

我需要捕获以下具体的例外情况:

System.Data.OleDb.OleDbException被捕获错误代码=-2147467259 Message=“您请求对表进行的更改不成功,因为它们将在索引、主键或关系中创建重复值。请更改包含重复数据的字段中的数据、删除索引或重新定义索引以允许重复条目并重试。”微软JET数据库引擎(微软JET数据库引擎)( System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object& executeResult( at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior,Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior,System.Data.OleDb.OleDbCommand.ExecuteNonQuery()上的String方法)

我不知道ErrorCode是什么,但它看起来不可靠。

我可以依赖于Message在不同平台上是相同的吗?

我可以以某种方式使用堆栈跟踪中找到的OleDbHResult hr值吗?(见https://stackoverflow.com/a/991660/327528)

是对Message进行文本搜索(如duplicateprimary key )的唯一解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-10 12:25:36

可以从以下位置找到OleDbException的JET错误代码:

代码语言:javascript
复制
OleDbError.SQLState

它是问题中提供的异常的3022

票数 2
EN

Stack Overflow用户

发布于 2012-10-09 09:41:39

您是对的,ErrorCode (-2147467259 = 0x80004005 = E_FAIL)过于通用,并且依赖消息非常脆弱,例如考虑本地化。

我会查看OleDbException.Errors集合,试图找到更具体的东西。

票数 7
EN

Stack Overflow用户

发布于 2013-02-11 17:18:15

您可以尝试对SQLState集合中的每个错误使用OleDbException.Errors属性。

找到这个引用:SQL状态错误码 <-不再工作了

更新参考资料:SQL错误码

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

https://stackoverflow.com/questions/12796934

复制
相关文章

相似问题

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