一直没解决这个问题,想请教一下各路大神。
我现在要将excel中的多条学生信息导入数据库,学号为唯一约束,只要一个学生信息已经在数据库中了,就反馈给客户端导入失败,我是应该插入每条数据之前查一下呢,还是用异常判断呢?小弟新人,请各路大神不吝赐教。
------解决方案--------------------
从技术上讲两种方法是都可以达到目的(抛出违反唯一性约束所以知道已经有了),但是从编程优化角度讲一定是先判断是不是存在然后再插入!
------解决方案--------------------
具体采用哪种方案,首先要估计一下你的数据中出现主键重复的可能性有多大。
如果主键重复的可能性很小,那么就采用直接插入,捕获异常的做法。
如果主键重复的可能性很大,那么就先检查主键是否存在,然后再插入的做法。
------解决方案--------------------
出现异常调用的资源更加多,当然如果异常出现少的话,相比每一个插入都要查询一下来说资源就少了。不过一般都不用唯一性约束异常来做吧,异常多了数据库错误的几率会更加大吧。如果能够保证新插入的数据,不管重复或不重复都是正确的数据,直接先delete然后insert。
------解决方案--------------------
看需求,你只是为了返回给客户端提示导入失败,所以考虑使用异常捕获就可以了,而且简单、靠谱,并发都不用考虑。还有根本不需要区分具体是抛得什么异常,只要是exception就说明程序报错了,那肯定是失败了