数据库插入数据报错:传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。[已解决]

在向数据库插入数据过程中,出现如下报错:

异常信息如下:

org.springframework.jdbc.UncategorizedSQLException:
Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。
The error occurred while setting parameters
SQL: INSERT INTO HIS_CHARGE_DETAIL_I_VIEW (HIS_PATIENT_ID, IN_HOS_ID, REC_NUMBER, NUMER, CHARGE_ORDER_DATE, ORDER_DEPT_CODE, ORDER_DEPT_NAME, ORDER_EMP_CODE, CHARGE_EXEC_DATE, EXEC_DEPT_CODE, EXEC_DEPT_NAME, EXEC_EMP_CODE, CHARGE_KIND_CODE, CHARGE_KIND_NAME, CHARGE_ITEM_CODE, CHARGE_ITEM_NAME, NUM, PRICE, AMOUNT, PATIENT_TYPE_CODE, PATIENT_TYPE_NAME ) values ( ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?,?, ?, ?,?, ?, ?, ?, ?, ?,? ) , ( ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?,?, ?, ?,?, ?, ?, ?, ?, ?,? )

解决方法:

通过网上查阅和测试,发现原因是一次向数据库传入参数超出限制
即 (list的size)乘(一行数据包含的参数)>2100
通过分批向数据库插入即可

                int count = 90;
                int batch = list.size() / count;
                if (list.size() % count != 0) {
                    batch = batch + 1;
                }

                //循环批量保存每组数据
                for (int i = 0; i < batch; i++) {
                    List<DemoEntity> subList = null;
                    if (i == batch - 1) {
                        subList = list.subList(count * i, list.size());
                    } else {
                        subList = list.subList(count * i, count * (i + 1));
                    }
                    JDBCMapper.addData(subList);
                }

感谢阅读~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值