I have a Java program that is agnostic from the database and I need to know, while inserting, if an SQLException was thrown because of a duplicate key.
If I was using a
You could "train" the program on startup (or config) by inserting a known duplicate key, and recording the thrown error code.
If you are using spring, set your unique KEY name as UK_user_id
for example and catch the DataIntegrityViolationException
.
You can then compare ex.getCause().getConstraintName()
with UK_user_id
.
I'm assuming you aren't using JDBC or this would be a very simple error lookup.
Do you have a different set of classes for accessing the different databases? If so, you could catch the exception in the database specific classes and throw your own exception type that is shared among all the database types.