执行的是存储过程 ,如果是单条插入在 proc.executeUpdate();后可以拿到结果
Connection conn = null;
CallableStatement proc = null;
try {
conn = ConnectionUtils.openConnection(dataSourceName);
proc = conn.prepareCall("{ call importuser(?,?,?)}");
conn.setAutoCommit(false);
for (UserModel model: models){
proc.setString(1, model.getUsername());
proc.setString(2, model.getPassword());
proc.setString(3, model.getCitycode());
proc.addBatch();
}
proc.executeBatch();
proc.clearBatch();
conn.commit();
} catch (Exception e) {
ConnectionUtils.rollback(conn);
throw e;
} finally {
ConnectionUtils.closeConnection(conn, proc);
}
但是,批量插入无法获取结果,
ResultSet resultSet = proc.getResultSet(); //返回null
ResultSet generatedKeys = proc.getGeneratedKeys(); //返回null
而数组只是
成功执行的记录数 成功执行存储函数,但是执行时检查重复的数据,本来该为不成功插入,但是记录数依然是0
int rows[] = ps.executeBatch(); //[0,0,0]
for(int row : rows) {
count += row;
}
我想计算不通过的个数。 存储过程中有判断重复的语句,重复的话不执行insert。 所以想要获取批量插入的结果集 或者说是 插入数据的影响行数;让我至少知道哪一条记录是错的