huang_ftpjh 2021-05-17 15:37 采纳率: 0%
浏览 33

jdbc 批量插入, 想知道通过了多少条

执行的是存储过程 ,如果是单条插入在  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。 所以想要获取批量插入的结果集 或者说是 插入数据的影响行数;让我至少知道哪一条记录是错的

  • 写回答

2条回答 默认 最新

  • summer_du 2021-05-17 17:10
    关注

    没看懂啥意思 。。

    总之,要么都通过,要么都不通过,即要么是0,要么是models.length。因为你设置了回滚,如果遇到异常的话,会都无法通过。

    评论

报告相同问题?

悬赏问题

  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多