Operation not allowed after ResultSet closed

原因:在批量执行sql语句的时候,没执行完就关闭了数据库连接,从而抛出异常。
解决方法:1、优化sql语句,降低执行的时间;2、调大执行时间;3、优化代码

对于第三个解决方法,举个栗子

{
	for(){
		查询select
		更新update
		插入insert
	}
}

代码执行过慢,导致没执行完数据库连接就关闭了
优化后:


{
	for(){
		查询 --------走缓存
		更新 -------放入List中,先不更新
		插入 -------放入List中,先不插入

		返回结果,可以关闭数据库连接
	}
	if(list!=null&&list.size>0){
		updateBatch()  -------异步处理
	}
	if(list!=null&&list.size>0){
		insertBatch() -------异步处理
	}
}

调用updateBatch、insertBatch可以用如下方法
①@sync
②事件驱动

list中可能没有数据,如果不加if(list!=null&&list.size>0)的话,会抛出error sql的错误

注意:出现error sql时候
1、sql语句编写问题
2、执行sql的数据是否为空

要真正进行批量插入需要配置
useServerPrepStmts=true&rewriteBatchedStatements=true
statement…报错,加上autoReconnect=true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值