JDBC stmt.executeBatch();总是被执行两次

weixin_37364152 2017-12-15 11:16:41

<%
String[] names={"A","B","C","D"};
/* 数据库连接的固定步骤 */
Class.forName("com.mysql.jdbc.Driver");//导入驱动
String url = "jdbc:mysql://localhost:3306/test";//建立连接字符串
String username = "test";//存储用户名
String password = "123456";//存储密码
Connection conn =DriverManager.getConnection(url, username, password);//获得数据库连接
try{
Statement stmt=conn.createStatement();
stmt.clearBatch();
for(int i=0;i<names.length;i++){
stmt.addBatch("insert into tb_batch(name) values('"+names[i]+"')");
}
out.println("批量添加成功");
stmt.executeBatch();

stmt.close();
conn.close();

}
catch(SQLException e){
e.printStackTrace();
}
%>


运行结果jsp页面打印是执行了一次
“批量添加成功 添加行数:4”
但看数据库却重复添加了一次,一共添加了8条数据“abcdabcd”
...全文
528 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_37364152 2017-12-20
  • 打赏
  • 举报
回复
经过这两天的反复蹂躏,我发现本地还是服务器上的tomcat运行都没问题。但是myeclisp中点运行就会被重复提交。重装myeclipse也不行。
什么都不能 2017-12-19
  • 打赏
  • 举报
回复
引用 11 楼 weixin_37364152 的回复:
执行了两次。我debug,发现到ThreadPoolExecutor 类中的一个方法就停住不往下运行了。网上修改设置的两个方法对这个也没效果。搞不清楚哪里造成重复调用这个代码了。
从浏览器的网络监控里看看发了几次http请求,你是否有自己写filter,如果有,看下是否有重复执行chain.doFilter(request,response);
weixin_37364152 2017-12-19
  • 打赏
  • 举报
回复
执行了两次。我debug,发现到ThreadPoolExecutor 类中的一个方法就停住不往下运行了。网上修改设置的两个方法对这个也没效果。搞不清楚哪里造成重复调用这个代码了。
什么都不能 2017-12-18
  • 打赏
  • 举报
回复
加日志看执行了几次
weixin_37364152 2017-12-18
  • 打赏
  • 举报
回复
引用 7 楼 long_539437 的回复:
[quote=引用 6 楼 hp961218 的回复:] [quote=引用 4 楼 long_539437 的回复:] 你执行了两次批处理啊 addBatch一次,executeBatch又来了次
没有,第一个是把数据添加到batch里面,然后后面那个才是批量执行操作[/quote] 哦,把 clearBatch()放在executeBatch()后面试试看或者你数据表里面是不是有数据[/quote] 放在clear后边也是一样的。插入后还是8条
weixin_37364152 2017-12-15
  • 打赏
  • 举报
回复
打错了。新建项目,只有这个jsp文件也这个结果
weixin_37364152 2017-12-15
  • 打赏
  • 举报
回复
就是一个书上的例题。 新疆web项目也是这个结果
自由自在_Yu 2017-12-15
  • 打赏
  • 举报
回复
其他代码还有执行的吗?这一段代码只会执行一次呀
weixin_37364152 2017-12-15
  • 打赏
  • 举报
回复
下周我试下,也有可能是mysql那边除了问题。新手上路,各种问题。感谢您的耐心解答。
  • 打赏
  • 举报
回复
引用 6 楼 hp961218 的回复:
[quote=引用 4 楼 long_539437 的回复:] 你执行了两次批处理啊 addBatch一次,executeBatch又来了次
没有,第一个是把数据添加到batch里面,然后后面那个才是批量执行操作[/quote] 哦,把 clearBatch()放在executeBatch()后面试试看或者你数据表里面是不是有数据
hp961218 2017-12-15
  • 打赏
  • 举报
回复
引用 4 楼 long_539437 的回复:
你执行了两次批处理啊 addBatch一次,executeBatch又来了次
没有,第一个是把数据添加到batch里面,然后后面那个才是批量执行操作
hp961218 2017-12-15
  • 打赏
  • 举报
回复
还有这种操作?
  • 打赏
  • 举报
回复
你执行了两次批处理啊 addBatch一次,executeBatch又来了次

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧