我需要捕获以下具体的例外情况:
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进行文本搜索(如duplicate和primary key )的唯一解决方案。
发布于 2012-10-10 12:25:36
可以从以下位置找到OleDbException的JET错误代码:
OleDbError.SQLState它是问题中提供的异常的3022。
发布于 2012-10-09 09:41:39
您是对的,ErrorCode (-2147467259 = 0x80004005 = E_FAIL)过于通用,并且依赖消息非常脆弱,例如考虑本地化。
我会查看OleDbException.Errors集合,试图找到更具体的东西。
发布于 2013-02-11 17:18:15
https://stackoverflow.com/questions/12796934
复制相似问题