使用 JDBC 捕获和处理 ORA-00001 SQLException 的正确方法是什么?
我正在创建一个简单的表单,通过使用 JDBC 的 Java Servlet 将输入的数据存储在极其简单的 Oracle 数据库表中。该表使用电子邮件地址作为主键。如果用户使用同一电子邮件地址多次提交表单,execute
函数将失败并引发 SQLException。异常的字符串如下:
java.sql.SQLException: ORA-00001: unique constraint (...removed...) violated
在这种情况下,我想捕获此异常并通过告诉用户不能使用同一电子邮件地址多次提交表单来处理它。单独处理 ORA-00001 并与 execute
可能抛出的任何其他 SQLException 不同的正确方法是什么?字符串比较显然可以在这里工作,但这似乎是一个糟糕的解决方案。
I'm creating a simple form that stores entered data in an extremely simple Oracle database table via a Java Servlet using JDBC. That table is using the email address as a primary key. If a user submits a form multiple times with the same email address, the execute
function fails and throws a SQLException. The exception's string is the following:
java.sql.SQLException: ORA-00001: unique constraint (...removed...) violated
In this scenario, I would like to catch this exception and deal with it by telling the user that the form cannot be submitted multiple times with the same email address. What is the proper way to handle ORA-00001 separately and differently from any of the other SQLExceptions that can be thrown by execute
? A string compare could obviously work here, but that seems like a poor solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您不需要独立于 DBMS,请使用 SQLException.getErrorCode()
它返回供应商特定的数字错误代码。对于 ORA-0001,这将是
1
If you don't need to be DBMS independent use
SQLException.getErrorCode()
It returns the vendor specific numeric error code. For ORA-0001 this would be
1