Java / Mysql从一个表中选择主键值,并将它们作为外键插入到另一个表中

时间:2019-12-25 13:37:47

标签: java mysql sql

我正在使用Netbeans中的Swing创建一个程序,该程序是Java中的Car Management应用程序,作为数据库,我正在使用Mysql,它将执行所有CRUD操作。我创建了一个包含3个不同表的数据库。

数据库架构

CREATE TABLE car_make(
  make_id INT NOT NULL AUTO_INCREMENT
  make VARCHAR(50)
  PRIMARY KEY(make_id)
)

CREATE TABLE car_model(
  model_id INT NOT NULL AUTO_INCREMENT
  model VARCHAR(50)
  fk_make_id INT
  PRIMARY KEY(model_id)
  FOREIGN KEY(fk_make_id) REFERENCES car_make(make_id)
)

CREATE TABLE car_attributes(
  car_attr_id INT NOT NULL AUTO_INCREMENT
  fk_make_id INT
  fk_model_id INT
  year INT
  body_type VARCHAR(50)
  mileage INT
  price DECIMAL(6,2)
  PRIMARY KEY(car_attr_id )
  FOREIGN KEY(fk_make_id)  REFERENCES car_make(make_id)
  FOREIGN KEY(fk_model_id) REFERENCES car_model(model_id )
);

car_make表中已经装有我手动插入的所有汽车品牌,并且它们的ID是自动生成的。并且car_model表中还为每个品牌填充了不同的模型。

我还使用Java Swing在netbeans中创建了用户界面,用户可以在其中选择汽车的品牌,这将自动生成相应的模型,年份,里程等,并将所有数据插入{{1 }}表。我的问题是,将汽车品牌和型号作为外键插入到car_attribute表中的查询是什么。例如,如果用户选择Make-BMW和Model-5系列,那么我要将这两个IDS都插入到第三张表中。

1 个答案:

答案 0 :(得分:0)

当您要添加新车时会出现这种情况,因此GUI会向您显示 CAR_MAKEs 选择后,它将显示 CAR_MODELs ,然后您需要 STORE 存储在arrayList中的数据ID(car_makes或car_models),并在查询中使用< strong> USER 提交

仅是伪代码

int carMakesSelectedIndex = comboCarMakes.getSelectedIndex();    
int carModelsSelectedIndex = comboCarModels.getSelectedIndex();
PreparedStatement stmt=con.prepareStatement("insert into car_attributes values(?,?,?,?,?,?,?,?,?,?)");  
stmt.setInt(1,carAttribute); 
stmt.setInt(2,carMakesIdList.get( carMakesSelectedIndex  ) ); 
stmt.setInt(3,carMakesIdList.get( carModelsSelectedIndex ) ); 
stmt.setString(4,carYear );
// the same with other attribute
相关问题