当前位置: 首页 > 面试题库 >

查找是否由于重复而引发SQLException

韩博厚
2023-03-14
问题内容

我有一个与数据库无关的Java程序,在插入时,我需要知道是否由于重复的键而引发了SQLException。

如果我使用的是单个数据库驱动程序,那么我将只使用ErrorCode,但是由于可以使用非常不同的引擎,因此ErrorCode是不同的。

有人做过吗?有任何想法吗?

许多TIA!

编辑:
我有一个配置文件,其中存储了驱动程序类(即:org.apache.derby.jdbc.ClientDriver)和其他一些所需的信息(即:用户名,密码,URL
…)。该连接始终以“ java.SQL.Connection”的形式传递,因此我并不在乎使用的是什么驱动程序。


问题答案:

使用基本的JDBC,实际上没有办法以跨数据库的方式来完成您要说的话。正如您提到的,可以使用 getErrorCode ,但需要特定于供应商的错误代码。

我看到的解决此问题的唯一三种方法是:

  1. 使用某种框架来完成从错误代码到有意义的异常的所有转换(Hibernate可能会这样做,其他人提到Spring会这样做)
  2. 插入之前,请手动(选择)检查重复项。(这不是100%,因为从技术上讲,有人可能会在您查询后进行插入操作)。
  3. 在插入上获得任何sql异常后,请尝试查询该ID。如果您确实可以找到匹配项,则可以肯定地确定收到的错误是由于主键重复造成的。(尽管可能存在多个问题,而实际上并不是抛出的问题)。

我的建议是编写您的代码,以尽可能避免该问题,然后(如果绝对必要)使用#3。



 类似资料:
  • 我试图找出两个矩形是否相互重叠。我将下面的矩形表示为< code>[x1,x2] x [y1,y2] 我只需要一个伪代码,我可以实现它来查找矩形是否彼此重叠。

  • 问题内容: 我正在使用SQL Server 2008,并且拥有一个数据库,其中包含150个以上具有重复索引的表。 我发现一些SQL脚本将列出重复的索引,但是我不确定是否应该信任它们。据说他们说我有400多个重复索引;我不确定这是否正确,因此不希望使用它们来自动删除重复项。 如何确定找到重复索引并将其删除? 问题答案: 查看Tom LaRock出色的“如何查找重复索引”博客文章-他详细解释了如何进行

  • 我知道如何检查给定的树是否是二叉树。但问题是,如果树包含重复的值,该怎么办。 如何检查可能包含重复值的树是否是二叉查找树重复值必须位于树/子树的右侧。

  • 给定一个完整的二叉树,其中节点的索引从1到N(索引1是根,N是树中的节点数)。在O(logN)时间复杂度下,我们能发现树中是否存在具有特定索引的节点吗? 下面我写了在O(N)中运行的代码 当节点位于右子树深处时,O(N)解似乎效率很低。我们可以避免在根级别访问左子树吗? 利用O(logN)时间复杂度是一个完整的二叉树这一事实,有可能实现这一目标吗?

  • 问题内容: 检查表是否存在于MySQL中(最好通过PHP中的PDO)而不抛出异常的最佳方法是什么。我不喜欢解析“ SHOW TABLES LIKE”等的结果。必须有某种布尔查询吗? 问题答案: 我不知道它的PDO语法,但这看起来很简单:

  • 问题内容: 我有一个附加到事件的处理程序,我希望它仅在由人触发而不是由trigger()方法触发时执行。我该如何区分? 例如, 问题答案: 您可以检查:如果已定义,则点击是人为的: 我在jsfiddle中的例子: