我应该从Excel文件中读取数据并保存在我的数据库中:
类:CableServiceImpl
public class CableServiceImpl implements CableService{
private CableDao cableDao;
public CableDao getCableDao() {
return cableDao;
}
public void setCableDao(CableDao cableDao) {
this.cableDao = cableDao;
}
public List<Cable> listeDesCables() {
return cableDao.listeCable();
}
public void creatCable(Cable wire) throws IOException {
ServiceLectureExcel service = new ServiceLectureExcel();
ArrayList<String> t = service.lectureCables();
String tabCable[] = new String[t.size()];
for(int i=0;i<t.size();i++){
tabCable[i]=t.get(i);
}
for(int i=4;i<tabCable.length;i++){
wire.setLeitung(tabCable[i]);
i++;
wire.setDq(tabCable[i]);
i++;
wire.setGrundfrabe(tabCable[i]);
i++;
wire.setKennfarbe(tabCable[i]);
List<Cable> lisCable = cableDao.listeCable();
if(lisCable.size()==0){
cableDao.save(wire);
}
else{
cableDao.update(wire);
}
}
}
问题:当我多次执行代码时,我的BD包含重复数据。那怎么能解决?
答案 0 :(得分:0)
你可以通知你的行吗? (例如:社会安全号码,GUID等)。如果是,则在数据库中创建一个日志表,并为每个导入的行标记相应的标识符为已导入。如果你没有这样的id,那么唯一的选择是逐字段比较(比如在c#中比较相等的结构)。但你也可以在这里做一个技巧:而不是直接比较逐场您可以计算每行的哈希并将其存储在db中。下次导入行时,首先计算哈希码。如果它不存在于您的哈希数据表中,那么您肯定可以将其导入。否则,您将回到将行与已导入的所有行进行比较的情况