我正在使用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都插入到第三张表中。
答案 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