社区
Java EE
帖子详情
java类中如何判断数据库中已经有了重复记录
Polly_Bruce
2010-06-07 07:06:22
想往数据库里插入一条记录,但数据库中已经有了此记录,所以插不进去。
我的想法是:在插入数据库之前,先在 java 类中判断数据库中是否有了相同的记录,
如果有,则提示有重复记录;
如果没有,则可以插入这条记录;
不知道想法我的想法是否正确,待朋友们指点和给出具体的实现方案。
...全文
1877
22
打赏
收藏
java类中如何判断数据库中已经有了重复记录
想往数据库里插入一条记录,但数据库中已经有了此记录,所以插不进去。 我的想法是:在插入数据库之前,先在 java 类中判断数据库中是否有了相同的记录, 如果有,则提示有重复记录; 如果没有,则可以插入这条记录; 不知道想法我的想法是否正确,待朋友们指点和给出具体的实现方案。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xieyu_zy
2010-06-08
打赏
举报
回复
[Quote=引用 12 楼 polly_bruce 的回复:]
记录中不只一个字段,以其中两个字段为一组 表示唯一记录
[/Quote]
做联合唯一性约束嘛,又不一定非要一个字段。如:
create unique index UK_TEST on ORD_WORK_ORDER (字段1, 字段2);
虽然唯一性约束是避免小概率事件的一种方式,不过在JAVA的编码中我们一般不通过异常去控制流程,至少将这种情况降得很低(因为通过高可用性验证以及源码的说明,对于异常控制流程的消耗是很大的)。
dddddz
2010-06-08
打赏
举报
回复
[Quote=引用 11 楼 dr_lou 的回复:]
这种事让数据库替你做吧,你捕获unique异常即可。
[/Quote]
11楼正解!
chenxizhiyi
2010-06-08
打赏
举报
回复
[Quote=引用 4 楼 xieyuooo 的回复:]
在一定的情况下,可以这样去实现,因为这个出错的概率几乎为0,当然也不排除出错的可能性,那就是并发了。但是这个对于普通的系统来说几乎不太可能发生如此小的概率事件,其实从你发起验证到验证、验证结束、插入数据、提交数据,这个过程(可能你通过网络异步AJAX验证会消耗网络传送时间),那么就可能出现两个或两个以上的请求验证都是成功的并插入同一条记录。
我不清楚你说的同一条记录是什么意思,是编号相同还是……
补充一下,如果你想将这种小概率事件放弃掉,而且又不愿意用约束,此时在JAVA代码中的方法做一个同步操作,可以相对一个对象,如果当前的DAO层为一个单例,那么可以相对this或直接在方法体上使用synchronized进行同步操作。
意思就是在对这个共享资源的使用的过程中,只允许最多一个线程在执行,多个线程谁先抢到谁执行,后面来的必须等待,也就是不可能有两个线程同时调用校验方法和提交方法,不过你真要这样做,就不能使用客户端发出请求了,因为校验和提交必须一起完成。
这样有点影响性能,对高并发业务同样不适用,其实和约束道理也是差不多,就是序列化,要控制并发,基本的思路都是序列化,只是如何序列化才能降低粒度,在那个地方序列化更加适合系统规范。
[/Quote]
小胖说的甚合我意,嘻嘻。
以前用ajax做过,当时还为自己学会了ajax而洋洋自得,看了小胖说的,觉得自己,哎~~
Polly_Bruce
2010-06-08
打赏
举报
回复
记录中不只一个字段,以其中两个字段为一组 表示唯一记录
dr_lou
2010-06-08
打赏
举报
回复
这种事让数据库替你做吧,你捕获unique异常即可。
amos1989
2010-06-08
打赏
举报
回复
[Quote=引用 7 楼 apollo_ts 的回复:]
那个字段加上唯一约束就行了,重复就异常。
[/Quote]
++
Pbulic
2010-06-08
打赏
举报
回复
[Quote=引用 7 楼 apollo_ts 的回复:]
那个字段加上唯一约束就行了,重复就异常。
[/Quote]
直接,简单
lq282514781
2010-06-08
打赏
举报
回复
[Quote=引用 3 楼 xuhuanchao 的回复:]
根据条件查询是否有数据,有返回true否则返回false
[/Quote]正解
APOLLO_TS
2010-06-08
打赏
举报
回复
那个字段加上唯一约束就行了,重复就异常。
创世纪小马哥
2010-06-08
打赏
举报
回复
方法1:使用Ajax进行无刷新查询
方法2:唯一性设置,捕获重复异常。
niujw002
2010-06-08
打赏
举报
回复
7楼正解。
jovinmavis
2010-06-08
打赏
举报
回复
用dwr和ajax都可以,服务端去判断下可以用来确定是否重复的字段即可
sirtener
2010-06-08
打赏
举报
回复
直接写一个存储过程来执行不就得了,这样更直接,比在代码中实现更好,可以有效的避免因为并发而引起的数据不一致的问题
liyangyun1986
2010-06-08
打赏
举报
回复
用AJAX在前台判断下,如果有的话,不让它提交不就得了。
zihuzihuzihu
2010-06-08
打赏
举报
回复
head_java_web
2010-06-08
打赏
举报
回复
小胖说的很对嘛
不爱吃萝卜的兔子
2010-06-07
打赏
举报
回复
我说个很简单的办法,你根据主键或唯一的那个条件去查,如果查出的对象不为空,就说明有,那么你不执行插入就是了,如果为空就执行插入
这个是个很笨很简单的办法,不知道对楼主有用么
xieyu_zy
2010-06-07
打赏
举报
回复
补充一下,如果你想将这种小概率事件放弃掉,而且又不愿意用约束,此时在JAVA代码中的方法做一个同步操作,可以相对一个对象,如果当前的DAO层为一个单例,那么可以相对this或直接在方法体上使用synchronized进行同步操作。
意思就是在对这个共享资源的使用的过程中,只允许最多一个线程在执行,多个线程谁先抢到谁执行,后面来的必须等待,也就是不可能有两个线程同时调用校验方法和提交方法,不过你真要这样做,就不能使用客户端发出请求了,因为校验和提交必须一起完成。
这样有点影响性能,对高并发业务同样不适用,其实和约束道理也是差不多,就是序列化,要控制并发,基本的思路都是序列化,只是如何序列化才能降低粒度,在那个地方序列化更加适合系统规范。
xieyu_zy
2010-06-07
打赏
举报
回复
在一定的情况下,可以这样去实现,因为这个出错的概率几乎为0,当然也不排除出错的可能性,那就是并发了。但是这个对于普通的系统来说几乎不太可能发生如此小的概率事件,其实从你发起验证到验证、验证结束、插入数据、提交数据,这个过程(可能你通过网络异步AJAX验证会消耗网络传送时间),那么就可能出现两个或两个以上的请求验证都是成功的并插入同一条记录。
我不清楚你说的同一条记录是什么意思,是编号相同还是很多字段相同,如果是编号相同我认为用ORACLE自带的序列管理器或自定义序列管理器就可以实现。如果你真需要完全无误的错误,那种即为小的概率事件都不放过的话,其实较为保险的还是用唯一性约束来控制,但是它会造成后来者抛一个异常,而且在高并发插入表中可能会导致阻塞问题(因为约束将使得插入进行检查的序列化检查过程)。
水中影子
2010-06-07
打赏
举报
回复
根据条件查询是否有数据,有返回true否则返回false
加载更多回复(2)
数据库
查
重复记录
数据库
查
重复记录
1、查找表
中
多余的
重复记录
,
重复记录
是根据单个字段(peopleId)来
判断
代码如下: select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 注意:这里的重复是指所有列的数据相同 2、删除表
中
多余的
重复记录
,
重复记录
是根据单个字段(peopleId)来
判断
,只留有rowid最小的记录 代码如下: d
查询
数据库
中
的重复数据记录
SELECT a.*, dlookup("r1","表2","id=" & a.id & " and name='"& a.name & "'") AS r1, dlookup("r2","表2","id=" & a.id & " and name='"& a.name & "'") AS r2。有两个意义上的
重复记录
,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
MySQL
数据库
(
Java
的
数据库
编程:JDBC)
JDBC,即
Java
Database Connectivity,
java
数据库
连接。是一种用于执行SQL语句的
Java
API,它是
Java
中
的
数据库
连接规范。这个API由
java
.sql.*,
java
x.sql.* 包
中
的一些类和接口组成,它为
Java
开发人员操作
数据库
提供了一个标准的API,可以为多种关系
数据库
提供统一访问.说白了就是用
Java
语言来操作
数据库
。原来我们操作
数据库
是在控制台使用SQL语句来操作
数据库
,JDBC是用
Java
语言向
数据库
发送SQL语句。
在 MySQL
数据库
中
删除
重复记录
的步骤
在 MySQL
数据库
中
删除
重复记录
的步骤 当我们在处理
数据库
中
的数据时,有时候会出现
重复记录
的情况,这些
重复记录
会影响数据的正确性,需要将其删除。下面是在 MySQL
数据库
中
删除
重复记录
的步骤: 1. 查找
重复记录
首先,我们需要找到
数据库
表
中
的
重复记录
。可以使用以下 SQL 语句查询表
中
所有的
重复记录
: SELECT column1, column2, COUNT(*) as count ...
Java
防止重复数据多次调用接口导致
数据库
插入
重复记录
Java
防止重复数据多次调用接口导致
数据库
插入
重复记录
Java EE
67,512
社区成员
225,880
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章