日期:2014-05-18  浏览次数:20685 次

刚工作,遇到的难题!希望哪位好人帮帮我,第一次发贴求救,工作任务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中;
}