<%
   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”

解决方案 »

  1.   

    就是一个书上的例题。
    新疆web项目也是这个结果
      

  2.   

    打错了。新建项目,只有这个jsp文件也这个结果
      

  3.   

    你执行了两次批处理啊
    addBatch一次,executeBatch又来了次
      

  4.   

    没有,第一个是把数据添加到batch里面,然后后面那个才是批量执行操作
      

  5.   

    哦,把 clearBatch()放在executeBatch()后面试试看或者你数据表里面是不是有数据
      

  6.   

    下周我试下,也有可能是mysql那边除了问题。新手上路,各种问题。感谢您的耐心解答。
      

  7.   

    哦,把 clearBatch()放在executeBatch()后面试试看或者你数据表里面是不是有数据放在clear后边也是一样的。插入后还是8条
      

  8.   

    执行了两次。我debug,发现到ThreadPoolExecutor 类中的一个方法就停住不往下运行了。网上修改设置的两个方法对这个也没效果。搞不清楚哪里造成重复调用这个代码了。
      

  9.   

    从浏览器的网络监控里看看发了几次http请求,你是否有自己写filter,如果有,看下是否有重复执行chain.doFilter(request,response);
      

  10.   

    经过这两天的反复蹂躏,我发现本地还是服务器上的tomcat运行都没问题。但是myeclisp中点运行就会被重复提交。重装myeclipse也不行。