Pues la misma excepción te lo dice:
Estás duplicando una clave primaria. El problema son los datos que estás ingresando. Estás ingresando un dato que ya existe como clave primaria, por eso te sale ese error.
Ahora, con respecto a tu manera de trabajar las clases con la base de datos, no está para nada ordenado.
Te propondría utilizar JPA, pero vamos, recién estás empezando con JDBC así que te daré algunos alcances:
En primer lugar, tienes dos entidades: Vaca y Establecimiento. Veamos algo sencillo, cada vaca debe tener un nombre, y debe pertenecer a un establecimiento. Tu base de datos deberá tener una estructura mas o menos así:
Código SQL:
Ver originalCREATE DATABASE granja;
USE granja;
CREATE TABLE establecimiento
(
est_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
est_nombre VARCHAR(50) NOT NULL
);
CREATE TABLE vaca
(
vac_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
vac_nombre VARCHAR(50) NOT NULL,
est_id INT NOT NULL
);
ALTER TABLE vaca
ADD CONSTRAINT fk_vaca_establecimiento
FOREIGN KEY (est_id) REFERENCES establecimiento(est_id);
INSERT INTO establecimiento (est_nom) VALUES('ESTABLECIMIENTO A');
INSERT INTO establecimiento (est_nom) VALUES('ESTABLECIMIENTO B');
En tu proyecto Java en NetBeans, crea un paquete llamado entities y dentro de él, dos clases: una clase Vaca y otra clase Establecimiento. Te quedarán algo así:
Código Java:
Ver originalpackage entities;
public class Establecimiento {
private int id;
public Establecimiento() {
}
public Establecimiento
(int id,
String nombre
) { this.id = id;
this.nombre = nombre;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
return nombre;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
}
Código Java:
Ver originalpackage entities;
public class Vaca {
private int id;
private Establecimiento establecimiento;
public Vaca() {
}
public Vaca
(int id,
String nombre, Establecimiento establecimiento
) { this.id = id;
this.nombre = nombre;
this.establecimiento = establecimiento;
}
public Establecimiento getEstablecimiento() {
return establecimiento;
}
public void setEstablecimiento(Establecimiento establecimiento) {
this.establecimiento = establecimiento;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
return nombre;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
}
El resto del proceso te lo muestro en un proyecto en Netbeans que funciona con la base de datos que creamos con el código que esta mas arriba para que lo veas más claro. El proyecto que te mando es sólo una idea, no pretende ser ley ni nada por el estilo. Falta implementar el manejo de excepciones, y otras cosillas más. Pero para empezar, está bien:
[URL="http://www.mediafire.com/?27ks7pzhvcdhk23"]Descarga aquí el proyecto[/URL]
Recuerda editar la clase ConexionBD para que pongas correctamente el nombre de usuario y la contraseña de tu base de datos.