使用 JDBC 捕获和处理 ORA-00001 SQLException 的正确方法是什么?

发布于 2024-11-02 01:22:24 字数 420 浏览 4 评论 0原文

我正在创建一个简单的表单,通过使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖阳 2024-11-09 01:22:24

如果您不需要独立于 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文