Java修改数据库表时某字段出现重复值不能修改该记录怎么继续修改下一条记录

Java修改数据库表的company_name字段,此字段唯一,有?北京金瓯鼎建筑装饰工程有限公司莱州分公司和北京金瓯鼎建筑装饰工程有限公司莱州分公司两个公司,把前面有问号的company_name去掉问号,但是有重复的,遇到有重复的不用修改此记录或者删除此记录。
String sql=" "+" update cdpt_company_info "+ "set company_name=replace(company_name , '?' ,'')"
+" where company_name like '?%' ";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
try {
ps.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
错误:Duplicate entry '北京金瓯鼎建筑装饰工程有限公司莱州分公司' for key 'company_name'

第1个回答  2015-09-08

可不可以不用一个sql完成

    找出有?的数据

    找出去掉?后在数据库中不存在的数据

    修改第2部查询出的数据

追问

company_name这个字段值:前面有问号的去掉以后如果和已有的company_name重复了,就不更新或者删除,前面有问号的去掉以后如果和已有的company_name没重复就去掉问号。

追答

是啊,这样情况不多的话循环查啊,按我刚才说的
1.查询出有?的List
2.把?去掉再放进db中查询,如果没有值证明不会重复,就放进一个可以改的List,
反之就得到了重复的List
3.你有可以删的和可以改的list,做什么不都行

追问

不能这样写,因为Java中的类(company)与数据库表字段不太一样,Java中的类(company)比数据库表中的字段少

追答

不知道什么意思,用jdbc跟类有什么关系。。。

本回答被网友采纳

用JAVA程序向SQL数据库导入Excel表,判断出SQL表中已存在的重复数据,并...
select 关键字段名称 as zs from table_c 返回的是一个二维数组你可以把它拆开成一维数组,因为他每一行只有一个值,然后再用数组的contains方法判断是否存在,这样效率高很多

如何查找数据库中的重复数据
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录...

java 如何批量修改一张表里面多条数据的某个字段的值,需要修改的字段值...
直接数据库操作嘛 全部改一样的就用update dealers set buynum where 。。不一样的话就存储结构吧。用java更新 最好用批处理PreparedStatement stamt.. "update ???"for(){ stamt.addBatch(); } stamt.executeBatch();

mysql数据库某列内容如果有重复就在重复值后边+1+2+3...递增
Select ROW_NUMBER() over(partition by proc_num order by proc_num) -1 as Id, proc_num from dbo.Cooler ) as a

java修改数据库失败次数
java mysql修改信息 不报错 确修改失败了_数据库字段异常可能是mysql严格模式导致...IvanhoeBlack 原创 关注 0点赞·498人阅读 最近,新手同事Java开发中遇到数据库报错:“ java.sql.SQLIntegrityConstraintViolationException: Column 'create_time' cannot be null”而且开发环境上没有出现,生产...

java中从数据库中取出两个字段的值然后去除重复值取最大值
只需要改下sql语句就可以了, 把select pxnr,xxsc from T_XYPXJLCB where XYXXFID= '441900012201410287'" 改为如下语句。select pxnr,MAX(xxsc) from T_XYPXJLCB where XYXXFID= '441900012201410287'"

如何在java文件中修改Mysql数据库的记录
通常修改记录用mysql语言就可以了,想通过java语言编程来实现修改,就需要安装JDBC驱动程序。然后就去API里找java.sql包,里面的Statement接口里有许多方法(作用,用于实现静态的sql语言并返回所生成结果的对象),当然还有一个就是PreparedStatement(预编译的对象),实现这两个接口中的方法,你就能实现删除,...

(java)Java如何修改表中当前记录的字段值?
String sql;sql = \\\\"insert into user (id,name) values (?,?)\\\\";PreparedStatement ps = cn.prepareStatement(sql);ps.setInt(1,xxx);ps.setString(2,xxx);...ResultSet rs = ps.executeQuery(); \/\/ 查询 int c = ps.executeUpdate(); \/\/ 更新 ...

数据库字段的值以大括号{}存在,如何修改、查询其中的值?
如果只能在数据库操作,那么修改可以考虑replace函数,匹配替换,查询可以考虑like模糊检索,但是都会导致索引失效,而且不够精准,如果可以考虑用java实现,那么直接查出字段值,解析为json字符串,取出key,替换value即可或通过key判断值。

javaWeb怎么记录修改的历史
表里面 entry property old new date 类似这么几个字段,java层再加一个这个表对应的实体类Record,并且有一个insert方法 在Problem的update方法里,很容易能获取到这几个值,update成功以后创建一个Record对象insert到表里。这样做的好处是可以收集任意一个实体类的修改记录,可能有User,Person...

相似回答