我在一个应用程序上遇到了一个问题,这个应用程序是通过一个swing表单在一个表上保存一个carrer,但是我不断地得到这个错误,它说我不能添加到子行,我知道这可能是由于添加到子行的值不存在pk应该去的地方造成的,但是我确定在父表中有一个pk值,所以我不知道会发生什么。我发送给fk的值是组合框的索引
以下是两张表:
create table facultad(
codigoFacultad int primary key auto_increment,
nombre varchar(50),
telefono varchar(50)
);
create table carrera(
codigoCarrera int primary key auto_increment,
nombre varchar(50),
cantidadMaterias int,
codigoFacultad int,
foreign key (codigoFacultad) references facultad(codigoFacultad) on update cascade
);
这是我用来保存在数据库中的过程
create procedure insertarCarrera(in idCar int, nom nvarchar(75), numMater int, codFac int)
insert into carrera values(idCar, nom, numMater,codFac);
这是我如何从swing运行save的:
public void insertarCarrera(Carrera ca){
try
{
this.conectar();
CallableStatement cal = this.getCon().prepareCall("{call insertarCarrera(?,?,?,?)}");
cal.setInt(1, ca.getCodigoCarrera());
cal.setString(2, ca.getNombre());
cal.setInt(3, ca.getCantidadMaterias());
cal.setInt(4, ca.getCodigoCarrera());
cal.executeUpdate();
JOptionPane.showMessageDialog(null, "Exito al insertar ");
} catch (SQLException e)
{
JOptionPane.showMessageDialog(null, "Error al insertar "+e.toString());
}
finally
{
this.desconectar();
}
}
conectar()是调用mysql连接的方法,ca是我填充数据的对象
最后,这就是如何从表单中收集数据
private void agregarCarrera() {
ca.setCodigoCarrera(Integer.parseInt(this.jTxtCodigo.getText()));
ca.setNombre(this.jTxtNombre.getText());
ca.setCantidadMaterias(Integer.parseInt(this.jSpinMaterias.getValue().toString() ));
ca.setCodigoFacultad(jCmbFacultad.getSelectedIndex());
dCa.insertarCarrera(ca);
}
希望有人能帮忙,为此折腾了一整天
暂无答案!
目前还没有任何答案,快来回答吧!