I need to catch the following specific exception:
System.Data.OleDb.OleDbException was caught ErrorCode=-2147467259
Message=”The changes you requested to the table were not successful
because they would create duplicate values in the index, primary key,
or relationship. Change the data in the field or fields that contain
duplicate data, remove the index, or redefine the index to permit
duplicate entries and try again.” Source=”Microsoft JET Database
Engine” StackTrace:
at 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, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
I’m not sure what ErrorCode is but it looks unreliable.
Can I rely on Message being identical across platforms?
Can I somehow use the OleDbHResult hr value found in the stack trace? (See https://stackoverflow.com/a/991660/327528)
Is the only solution to do a text search of Message for words like duplicate and primary key?
The JET error code for a
OleDbExceptioncan be found from:which is
3022for the exception provided in the question.