jdbc一次可以插入多个表 ,多条记录

//2.进行插入方法
public boolean charu(Image Image){
    int count[];
    int count1[];

    boolean flag=false;

    //1.先连接数据库
    Connection connection=getCon();

    PreparedStatement pst = null;
    PreparedStatement pst2 = null;

    String sql="INSERT INTO tb_banqiimgs(img_name,img_path) values(?,?)";
    String sql2="INSERT INTO tb_areas(area_id,areaTitle,areaLink,areaMapInfo) values(?,?,?,?)";
    Integer enterInfoId = null;
    try {
        connection.setAutoCommit(false);// 需要用到事务,不能让他自动提交,需要手动提交
        pst = (PreparedStatement) connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        pst2 = connection.prepareStatement(sql2);// sql2表示对另一张表的插入记录

        pst.setString(1,Image.getImg_name());
        pst.setString(2,Image.getImage());
        pst.addBatch();

        pst2.setInt(1,1);
        pst2.setString(2,"haha");
        pst2.setString(3,"wocao");
        pst2.setString(4,"hehe");
        pst2.addBatch();

        count = pst.executeBatch();
        count1 = pst2.executeBatch();
        connection.commit();                 //提交事务,这个非常重要

        for(int i : count){
            if(i == 0) {
                connection.rollback();              // 回滚,非常重要
                System.out.println("======出现异常,回滚=========");
            }
        }
        for(int i : count1){
            if(i == 0) {
                connection.rollback();          // 回滚,非常重要
                System.out.println("==111====出现异常,回滚====111=====");
            }
        }

        ResultSet rst = pst.getGeneratedKeys();
        if(rst.next()) {
            enterInfoId = rst.getInt(1);
            System.out.print("获取自动增加的id=="+enterInfoId+"\n");
        }
        flag=true;
    }catch (SQLException e){
        e.printStackTrace();
    }
    return flag;
}

猜你喜欢

转载自blog.csdn.net/qq_37164847/article/details/80250447