我的线程池中有10个线程,并且正在执行一个任务,具体取决于它在mysql中的条目。问题是如果mysql数据库中存在该条目,则不需要处理,控件将从那里返回。
我在表中使用了唯一约束但是如何在应用程序级别处理它?</ p>
除了catcin sqlintegrityconstraintviolationexception
之外还有什么办法吗?
答案 0 :(得分:0)
在线程的每个任务中使用单独的连接。 使用Statement.getUpdateCount()或int insertCount = statement.executeUpdate(...)
答案 1 :(得分:0)
这可以通过多种方式完成,但每种方法都有其优点和缺点。
1)将您在数据库中设置的主键或唯一约束存储在内存中。在插入记录之前,您始终可以检查条目是否已存在。在这种情况下,我们必须确保没有记录通过后门插入数据库(所有记录都要通过您的应用程序插入或更新)。此外,当您的数据库越来越大时,它也会消耗大量内存。
2)在插入记录之前查询数据库。这是最安全的方法,但是有两个操作(select&amp; insert)用于插入新记录。
3)盲目插入记录。在这种情况下,将抛出完整性异常并且应该正确处理它。
在上述方法中保留所有优点和缺点,选项“3”对我来说似乎是一个更好的解决方案,但您可以根据自己的需要做出决定。