通过组合框添加外键时swing应用程序出错

i86rm4rw  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(262)

我在一个应用程序上遇到了一个问题,这个应用程序是通过一个swing表单在一个表上保存一个carrer,但是我不断地得到这个错误,它说我不能添加到子行,我知道这可能是由于添加到子行的值不存在pk应该去的地方造成的,但是我确定在父表中有一个pk值,所以我不知道会发生什么。我发送给fk的值是组合框的索引
以下是两张表:

  1. create table facultad(
  2. codigoFacultad int primary key auto_increment,
  3. nombre varchar(50),
  4. telefono varchar(50)
  5. );
  6. create table carrera(
  7. codigoCarrera int primary key auto_increment,
  8. nombre varchar(50),
  9. cantidadMaterias int,
  10. codigoFacultad int,
  11. foreign key (codigoFacultad) references facultad(codigoFacultad) on update cascade
  12. );

这是我用来保存在数据库中的过程

  1. create procedure insertarCarrera(in idCar int, nom nvarchar(75), numMater int, codFac int)
  2. insert into carrera values(idCar, nom, numMater,codFac);

这是我如何从swing运行save的:

  1. public void insertarCarrera(Carrera ca){
  2. try
  3. {
  4. this.conectar();
  5. CallableStatement cal = this.getCon().prepareCall("{call insertarCarrera(?,?,?,?)}");
  6. cal.setInt(1, ca.getCodigoCarrera());
  7. cal.setString(2, ca.getNombre());
  8. cal.setInt(3, ca.getCantidadMaterias());
  9. cal.setInt(4, ca.getCodigoCarrera());
  10. cal.executeUpdate();
  11. JOptionPane.showMessageDialog(null, "Exito al insertar ");
  12. } catch (SQLException e)
  13. {
  14. JOptionPane.showMessageDialog(null, "Error al insertar "+e.toString());
  15. }
  16. finally
  17. {
  18. this.desconectar();
  19. }
  20. }

conectar()是调用mysql连接的方法,ca是我填充数据的对象
最后,这就是如何从表单中收集数据

  1. private void agregarCarrera() {
  2. ca.setCodigoCarrera(Integer.parseInt(this.jTxtCodigo.getText()));
  3. ca.setNombre(this.jTxtNombre.getText());
  4. ca.setCantidadMaterias(Integer.parseInt(this.jSpinMaterias.getValue().toString() ));
  5. ca.setCodigoFacultad(jCmbFacultad.getSelectedIndex());
  6. dCa.insertarCarrera(ca);
  7. }

希望有人能帮忙,为此折腾了一整天

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题