Java + MySQL 完整性违规处理

2023-11-24

我使用 JDBC(mysql 数据库)编写 Java 程序。 当我违反 mysql 完整性时(例如,我尝试插入相同的主键值),我发现SQL 异常。我应该以永远不会发生的方式编写它(例如,首先布尔函数检查主键值是否不在数据库中,然后调用插入),或者可以仅通过异常来处理它吗? 例子 :

catch (SQLException ex) {ex.printStackTrace(); showSomeErrorDialog(); }

实际上基本上有两种方法可以实现这一目标:

  1. 在插入之前测试记录是否存在 - 在同一事务内。

  2. 确定是否SQLException#getSQLState()被捕获的SQLException以。。开始23这是违反约束的SQL规范。也就是说,它可能是由更多因素引起的,而不仅仅是“仅仅”违反约束。你不应该修改每一个SQLException作为约束违规。

    public static boolean isConstraintViolation(SQLException e) {
        return e.getSQLState().startsWith("23");
    }
    

我会选择第一个,因为它在语义上更正确。事实上,这并非特例。你就是know它有可能发生。但在事务未同步(无意中或为了优化性能)的高并发环境中,它可能会失败。然后您可能想要确定异常。

也就是说,您通常不应该违反约束首要的关键。在使用技术键作为主键的精心设计的数据模型中,它们通常由数据库本身管理。该字段不应该是一个唯一键?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java + MySQL 完整性违规处理 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就

随机推荐

  • 在 iOS 设备上运行网络服务器

    我想创建一个可以在其他 iOS 设备之间共享文件的应用程序 也可以在桌面计算机之间共享文件 所以我想做的是在我的设备上运行一个轻量级 Web 服务器 允许从设备下载文件 如下所示 http myphone local 1234 folder
  • 如何在 C# 中证明方法永远不会返回 null(按合同设计)

    我有一个永远不会返回空对象的方法 我想澄清一下 这样我的 API 的用户就不必编写如下代码 if Getxyz null do stuff 我该如何表达这个意图 不幸的是 没有办法内置到 C 中 您可以记录这一事实 但这不会被自动检查 如果
  • 桌面版 flutter,Visual Studio 2022 问题

    当我尝试在 Windows 上运行 flutter 应用程序时收到此消息 Building Windows application CMake Error at CMakeLists txt 2 project Generator Visu
  • Couchdb数据库-每用户设计文档管理

    我正在评估 Couchdb 作为一个有很多用户的 Web 应用程序 如果我使用每用户数据库模型 想必每个数据库中的设计文档都是相同的 我没有发现任何提及作用于多个数据库的 全局 设计文档 或任何可以轻松更改所有用户数据库的设计文档的工具 这
  • 在 C 中创建数组

    我正在尝试用 C 创建一个 UNIX shell 如果是用 Java 那将是小菜一碟 但我对 C 没有那么丰富的经验 C 中的数组让我有点困惑 我不确定如何声明或访问某些数据结构 我想创建一个字符串来在每一行中读取 很简单 只是一个字符数组
  • 自定义按键绑定 Xcode 4?

    不久前我问了一个问题Xcode 中的自定义键绑定 我最终重新创建了一些TextMate 的按键命令在 Xcode 中 刚刚更新到 Xcode 4 PBKeyBinding 文件似乎不再有任何作用 自定义键绑定 特别是 Xcode 4 的新热
  • Windows Server 2012 中的 AWS EFS [已关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有人曾经让 Windows Server 使用 Windows NFS 4 1 客户端连接到 AWS EFS 卷吗 我知道它不受支持 但想知道是否有人做过 或通过其他客户端或实用程序
  • 从另一个类调用类方法

    有没有办法从另一个类调用一个类的方法 我正在寻找类似 PHP 的东西call user func array 这是我想要发生的事情 class A def method1 arg1 arg2 class B A method1 1 2 更新
  • 解释 Visual Studio 2010 及更高版本、WinForms 和 WPF 中的严重错误

    尝试将以下代码放入其中LoadWinForms 的事件处理程序或Loaded对于 WPF Dim doc As New XmlDocument Dim nsmgr As New XmlNamespaceManager Nothing thi
  • jquery tmpl 格式化日期?

    我正在使用 jquery tmpl 在表中显示一堆结果 其中之一是我在模板中使用它输出的日期 td class textAlignRight EffectiveDate td 但它的格式如 Date 1245398693390 我怎样才能改
  • 在 r 中读取大文本文件

    我想读取一个包含 110 000 000 行和 8 列的大型视频文件 这些列由 2 个整数列和 6 个逻辑列组成 分隔符 在文件中使用 我尝试使用read big matrix这花了很长时间 我也尝试过dumpDf并且内存不足 我试过ff我
  • Safari 对子像素计算进行舍入

    我有一个连续占用 829px 的容器 并且具有相同大小的背景图像 我在该容器中有一个 div 它根据 829px 容器计算其宽度 在 safari 上 div 宽度约为 173 8px 但由于 safari webkit 向下舍入 其宽度被
  • 如何使用 node.js 响应传入的 Twilio 呼叫和 SMS 消息?

    在我的应用程序中 我使用 twilio node js 模块来接收短信 发送短信 接听电话和拨打电话 我弄清楚了如何发送短信和拨打电话 但我不知道如何回复来电和短信 我如何使用节点来响应这些 当 Twilio 收到对您的电话号码的呼叫时 它
  • 如何将 Jackson mixin 添加到阅读器而不是对象映射器?

    我有一个对象 我想在程序的一部分中使用属性进行序列化 但在不同的部分中没有属性 我还有一个经过广泛定制的 ObjectMapper 用于两种序列化 我的第一个倾向是使用 Mixin 来调整是否显示属性 但似乎您只能将它们放在 ObjectM
  • 运行gradle任务时如何在命令行中传递多个参数?

    我有一个由 gradle 任务运行的 java 和 groovy 类 我已设法使其工作 但我不喜欢在命令行中传递参数的方式 这是我目前通过命令行执行此操作的方法 gradle runTask Pmode doStuff username p
  • Java FileLock 是 POSIX Advisory (fcntl) 锁吗

    我有一个使用 POSIX 咨询锁锁定文件的 C 程序 也就是说 它使用POSIX fcntl系统调用用于锁定操作 我希望 Java 程序能够与 C 程序进行互操作 因此我希望我的 Java 程序也使用 POSIX 咨询锁 Java 中的文件
  • 使用 jQuery .on() 绑定到准备就绪并同时调整大小

    这适用于在就绪和调整大小时运行相同的代码 document ready function window resize function Stuff in here happens on ready and resize resize Tri
  • 正在使用“out”不好的做法

    我刚刚添加了一个outbool 参数到我编写的方法中 以便在我的 UI 中收到警告 我使用了 out 而不是让方法本身返回 false true 因为这意味着做一点事失败 成功 我的想法是warnUser将指示警告实际上是什么 而无需查看该
  • 如何将脚本和 CSS 挂接到 中?

    我正在制作的模块的问题是它会生成一个 javascript 片段 因此我无法使用操作将其挂接到 HTML 部分 因为该操作要求我有一个 JS 文件 如果我是 请纠正我 错误的 我可以通过哪些方法将 JavaScript 片段放入标签中 我正
  • Java + MySQL 完整性违规处理

    我使用 JDBC mysql 数据库 编写 Java 程序 当我违反 mysql 完整性时 例如 我尝试插入相同的主键值 我发现SQL 异常 我应该以永远不会发生的方式编写它 例如 首先布尔函数检查主键值是否不在数据库中 然后调用插入 或者