jdbc同时插入两个表,两个表有关联关系

    //2.进行插入方法
    public boolean charu(Image Image){
        boolean flag=false;

        Connection connection=getCon();

        PreparedStatement pst = null;
        PreparedStatement pst2 = null;

        String sql1="INSERT INTO tb_imgs(img_name,img_path) values(?,?)";
        String sql2="INSERT INTO tb_as(area_id,areaTitle,areaLink,areaMapInfo) values(?,?,?,?)";

        Integer enterInfoId = null;

        try {
            //Statement.RETURN_GENERATED_KEYS:获取自动增加的id            pst = (PreparedStatement) connection.prepareStatement(sql1, Statement.RETURN_GENERATED_KEYS);
            pst.setString(1,Image.getImg_name());
            pst.setString(2,Image.getImage());
            //提交pst对象
            pst.executeUpdate();

            ResultSet rst = pst.getGeneratedKeys();
            if(rst.next()) {
                enterInfoId = rst.getInt(1);
                System.out.print("获取自动增加的id=="+enterInfoId+"\n");

                String areas=banqiImage.getAreas_data();//先获取热区数据
                JSONArray json = JSONArray.fromObject(areas); // 首先把字符串转成 JSONArray  对象
                if(json.size()>0){
                    pst2 = connection.prepareStatement(sql2);// sql2表示对另一张表的插入记录
                    for(int i=0;i<json.size();i++){
                        JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象

                           String areaTitle= (String) job.get("areaTitle");
                        String areaLink= (String) job.get("areaLink");
                        String areaMapInfo= (String) job.get("areaMapInfo");

                        System.out.println("热区名字==="+areaTitle+"\n") ;
                        System.out.println("热区链接==="+areaLink+"\n") ;
                        System.out.println("热区坐标==="+areaMapInfo+"\n");

                        pst2.setInt(1,enterInfoId);
                        pst2.setString(2,areaTitle);
                        pst2.setString(3,areaLink);
                        pst2.setString(4,areaMapInfo);

                        pst2.addBatch();
                    }
//                    pst2.executeUpdate();
                    pst2.executeBatch();
                }
            }
            flag=true;
        }catch (SQLException e){
            e.printStackTrace();
        }
        return flag;
    }

猜你喜欢

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