Foro sobre Java SE > Problema con ABM y SQL
¿Alguna excepción?
Me daban muchas, pero ahora modifique algunas cosas que ni se como hice y ahora me tira este mensaje:
No se pudo realizar la insercion:Instrucción INSERT en conflicto con la restricción FOREIGN KEY "FK_Paciente_ObraSocial1". El conflicto ha aparecido en la base de datos "BaseDatoPS", tabla "dbo.ObraSocial", column 'NroObraSocial'.
BUILD SUCCESSFUL (total time: 1 minute 25 seconds)
Será porque yo coloque el nombre de todas las obra sociales en un combo box, y no le estoy pasando bien el dato cuando hago la insercion del paciente.
Tambien me pasa lo mismo cuando quiero hacer una modificacion, tira conflicto con una FK de una tabla, cuyo dato tambien lo tengo en un combo.
choces, ya pude insertar el paciente, estoy feliz sisisisisisisis, ahora me falta probar con la modificacion y la eliminacion, cambie la forma en que le estaba pasando los datos, el problema estaba en el combobox, no estaba recibiendo el valor que debia. Aqui esta el cambio que hice
ObraSocial os=(ObraSocial)this.CombObraSocial.getSelectedItem();
int codos=os.getNroObraSocial();
Igual seguire recurriendo por tu ayuda, gracias por estar. Besos
Buenas, otra vez, tengo que presentar para el lunes un programa que tiene varios Frame, en uno estoy renegando porque debo hacer el ABM de pacientes.
El codigo que hago, funciona bien cuando se trata de datos de una sola tabla en sql, pero en este caso, el ABM contiene algunos datos que pertenecen a otras tablas. Ejemplo
Pacientes, esta relacionado con turnos, obra social e historiaclinica tiene un campo que es clave ppal, he tratado de todas formas de poder ingresar los datos de pacientes y no consigo nada. Aqui el codigo que siempre he hecho y me ha funcionado, a excepcion de ahora:
Paciente Pa=null;
String ape=txtApellido.getText();
String nom=txtNombre.getText();
int dni=Integer.parseInt(txtdni.getText());
int edad=Integer.parseInt(txtedad.getText());
String sex=String.valueOf(CBSexo.getSelectedIndex());
String fechanac=txtFechaNac.getText();
String calle=txtCalle.getText();
String Barrio=txtBarrio.getText();
int tel=Integer.parseInt(txtelefono.getText());
String email=txtEmail.getText();
String fechaing=txtFechaIngreso.getText();
String prof=txtProfesion.getText();
String lugtrab=txtLugarTrabajo.getText();
String obs=TAreaObservacion.getText();
String cons=String.valueOf(CBConsInformado.getSelectedIndex());
int tur=Integer.parseInt(txtTurno.getText());
int hc=Integer.parseInt(txtHistoriaClinica.getText());
int os=CombObraSocial.getSelectedIndex();
int nroafil=Integer.parseInt(txtNroAfiliado.getText());
Pa=new Paciente(ape,nom,dni,edad,sex,fechanac,calle,Barrio,tel,email,fechaing,prof,lugtrab,obs,cons,tur,hc,os,nroafil);
JOptionPane.showMessageDialog(this,Conexion.getInstance().InsertarPaciente(Pa));
Les agradeceria si me ayudaran, por favor, nose que hacer, como les dije antes, no manejo muy bien el codigo, recien estoy aprendiendo y debo presentar este ABM para ell lunes,
Aqui esta el codigo que hice para hacer la insercion,
public String InsertarPaciente(Paciente Pa)
{
String resultado="";
try{
// boolean res=VerificarExistenciaPaciente(Pa.getDNI());
// if(res==true)
// {
AbrirConexion();
st=con.createStatement();
String sql="insert into Paciente (Apellido, Nombre, DNI, Edad, Sexo, FechaNacimiento,"
+ " Calle, Barrio, Telefono, Email, FechaIngreso, Profesion, LugarTrabajo,Observaciones,Consentimiento, Turno, HistoriaClinica, ObraSocial, NroAfiliado)values"
+ " ('"+Pa.getApellido()+"','"+Pa.getNombre()+"',"+Pa.getDNI()+","+Pa.getEdad()+",'"+Pa.getSexo()+"','"+Pa.getFechaNacimiento()+"','"+Pa.getCalle()+"',"
+ ""+Pa.getTelefono()+",'"+Pa.getEmail()+"','"+Pa.getFechaIngreso()+"','"+Pa.getProfesion()+"','"+Pa.getLugarTrabajo()+"','"+Pa.getObservaciones()+"',"
+ "'"+Pa.getConsentimiento()+"',"+Pa.getTurno()+","+Pa.getHistoriaClinica()+","+Pa.getObraSocial()+","+Pa.getNroAfiliado()+")";
st.executeUpdate(sql);
resultado="Paciente insertado con exito";
// }
}
catch(SQLException e){
System.out.println("No se pudo realizar la insercion:"+ e.getMessage());}
return resultado;
}
Nota: el campo que falta es NroPaciente, este es clave ppal y es autogenerada por sql, poreso no la puse en la sentencia
Porfa ayudenme