刚工作,遇到的难题!希望哪位好人帮帮我,第一次发贴求救,工作任务25号就要交.谢谢了
我现在做的模块内容是上传文件内容到数据库.数据库里表的设计是有主键的,问题就是文件里面可能会有重复的主键内容.请问我怎么才能把这重复的主键内容给找出来.我在网山查了用
SQLException 抛异常能找到主键错误,可是程序运行老是报:unique constraint (IRONHORSE.PK_LOAD_DATA_T_NEW) violated 的错误.现在头都大了.我试着用以下代码来寻找可是还是有错,哪位高人能帮助下 .谢谢了.小弟QQ:110796632 万分感激
try
{
SQL 插入语句 }
catch(SqlException ex)
{
if(ex.getErrorCode()==00001) //主键重复
{
计算他的数量
}
else
{
其他 }
}
------解决方案--------------------找一个set,每插入一条,把key放进去,然后每次插入之前去set中检查是否存在,已经存在的不insert
------解决方案--------------------inster 之前
select一边
------解决方案--------------------建议
1) 去除表的PK (alter table)
2) import data
3) 写个SQL去拿所有相同的PK column 相同的数据
------解决方案--------------------select * from table a ,table b where a.pk=b.pk; 剔除掉 相同pk 想办法
------解决方案--------------------up
------解决方案--------------------支持一楼的
------解决方案--------------------尽量不要用异常来判断主键插入错误
最好是先查询,然后根据主键进行 插入 或 更新 的操作
------解决方案--------------------都可以的,自己看着办的
------解决方案--------------------直接用saveOrUpdate就行啦。
------解决方案--------------------一楼和2楼的 方法可行
------解决方案--------------------闻着分香, 我就来了, 顶一下.
------解决方案--------------------我觉得你的数据库设计就有问题,
既然插入到主键的值 有重复,那那个字段就不能做主键啊,再加个主键字段吧,最省事了
如果你是想把重复的找出来不存?还是想统计什么数量? 我看你在try{}catch(){}里面有 计算他的数量嘛。
如果像你这样计算他的数量 的话,那不就永远都是一吗?主键又不能相同。
if(ex.getErrorCode()==00001) //主键重复
{
计算他的数量
}
else
{
其他 }
------解决方案--------------------要插入之前写判断你的 主键(id)是否一定在表里边存在了!
select * from table where id in (select id from table)
如果这个结果集返回数=1的话,说明存在了, 你就不插入了!
------解决方案--------------------做一个hashmap判断key是否包含,
if (包含) {
有key重复;
} else {
存入map中;
}