Foros del Web » Programación » Java »

insertar datos en mysql con netbeans

Estas en el tema de insertar datos en mysql con netbeans en el foro de Java en Foros del Web. Hola a todos de nuevo por el foro. Les cuento mi problema Estoy programando en Netbeans 6.9 (no tengo mucha experiencia) y como base de ...
  #1 (permalink)  
Antiguo 04/09/2011, 16:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 21
Antigüedad: 3 años, 3 meses
Puntos: 0
insertar datos en mysql con netbeans

Hola a todos de nuevo por el foro.
Les cuento mi problema

Estoy programando en Netbeans 6.9 (no tengo mucha experiencia) y como base de datos utilizo Mysql.
Tengo dos tablas, una se llama establecimiento y otra vaca. Establecimiento tiene como clave primaria nombree Varchar (25), y vaca tiene un campo nombree Varchar(25). Cree un índice entre las dos tablas a traves de nombree y establecí la clave foranea con update cascade y delete cascade.
En netbeans tengo un formulario en donde se ingresan los datos en jtexfield, los recupero en variables y se los paso a un método que se llama almacenar vaca.
El insert en la tabla establecimiento funciona, pero para la vaca, no.
El código del método almacenar vaca es:
public void almacenarVaca(int rp1, String nombreV1, String fechaNac1, int partos1, String vacunas1, String enfermedades1, String estado1, String establecimiento1)throws ClassNotFoundException, SQLException, ParseException{
rp = rp1;
nombreV = nombreV1;
fechaNac = fechaNac1;
partos = partos1;
vacunas = vacunas1;
enfermedades = enfermedades1;
estado = estado1;
establecimiento = establecimiento1;
int lineas_modi=0;
establecerConexion();

Statement consulta = conexion.createStatement();
lineas_modi = consulta.executeUpdate("INSERT INTO vaca(rp, nombrev, fechanac, partos, vacunas, enfermedades, estado, nombree) VALUES ('" + rp + "','" + nombreV + "','" + fechaNac + "', '" + partos + "', '" + vacunas +"','" + enfermedades +"','" + estado + "', '" + establecimiento + "')");
try
{

// <editor-fold defaultstate="collapsed" desc="comment">
// </editor-fold>
JOptionPane.showMessageDialog(null,"Los datos se guardaron correctamente");
}catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Problema al consultar la bd -> " + e.getMessage());
}


consulta.close();
cierraConexion();
}

Me da el siguiente error cuando intento insertar dos vacas con el mismo nombre de establecimiento

GRAVE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Duplicate entry 'LA CABAÑA' for key 2

Alguien puede decirme que configuré mal en la base de datos???

Gracias.
  #2 (permalink)  
Antiguo 04/09/2011, 17:41
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.873
Antigüedad: 6 años, 4 meses
Puntos: 416
Respuesta: insertar datos en mysql con netbeans

Pues, el error es claro. Estas tratando de duplicar una entrada en la tabla vaca.

¿Haz verificado que exista o no un registro que contenga "LA CABAÑA" en nombre en la tabla vaca?
  #3 (permalink)  
Antiguo 04/09/2011, 18:50
 
Fecha de Ingreso: agosto-2011
Mensajes: 21
Antigüedad: 3 años, 3 meses
Puntos: 0
Respuesta: insertar datos en mysql con netbeans

Ante todo gracias por responder.
Si tengo ya una vaca en el establecimiento LA CABAÑA. Pero quiero guardar otra vaca con otros datos que pertencen al mismo establecimiento LA CABAÑA.
Debería poder guardar varias vacas que pertenezcan al mismo establecimiento, me explico???
  #4 (permalink)  
Antiguo 04/09/2011, 19:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.873
Antigüedad: 6 años, 4 meses
Puntos: 416
Respuesta: insertar datos en mysql con netbeans

Cita:
Iniciado por LilyV Ver Mensaje
Ante todo gracias por responder.
Si tengo ya una vaca en el establecimiento LA CABAÑA. Pero quiero guardar otra vaca con otros datos que pertencen al mismo establecimiento LA CABAÑA.
Debería poder guardar varias vacas que pertenezcan al mismo establecimiento, me explico???
¿Estableciste el campo nombre como primario o unico en la tabla vaca? Si es asi, lo estas estructurando mal.
  #5 (permalink)  
Antiguo 04/09/2011, 19:20
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 117
Antigüedad: 4 años
Puntos: 23
Respuesta: insertar datos en mysql con netbeans

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 original
  1. CREATE DATABASE granja;
  2. USE granja;
  3.  
  4. CREATE TABLE establecimiento
  5. (
  6. est_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  7. est_nombre VARCHAR(50) NOT NULL
  8. );
  9.  
  10. CREATE TABLE vaca
  11. (
  12. vac_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  13. vac_nombre VARCHAR(50) NOT NULL,
  14. est_id INT NOT NULL
  15. );
  16.  
  17. ALTER TABLE vaca
  18.   ADD CONSTRAINT fk_vaca_establecimiento
  19.   FOREIGN KEY (est_id) REFERENCES establecimiento(est_id);
  20.  
  21. INSERT INTO establecimiento (est_nom) VALUES('ESTABLECIMIENTO A');
  22. 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 original
  1. package entities;
  2.  
  3. public class Establecimiento {
  4.    
  5.     private int id;
  6.     private String nombre;
  7.  
  8.     public Establecimiento() {
  9.     }
  10.  
  11.     public Establecimiento(int id, String nombre) {
  12.         this.id = id;
  13.         this.nombre = nombre;
  14.     }
  15.  
  16.     public int getId() {
  17.         return id;
  18.     }
  19.  
  20.     public void setId(int id) {
  21.         this.id = id;
  22.     }
  23.  
  24.     public String getNombre() {
  25.         return nombre;
  26.     }
  27.  
  28.     public void setNombre(String nombre) {
  29.         this.nombre = nombre;
  30.     }
  31.  
  32. }

Código Java:
Ver original
  1. package entities;
  2.  
  3. public class Vaca {
  4.    
  5.     private int id;
  6.     private String nombre;
  7.     private Establecimiento establecimiento;
  8.  
  9.     public Vaca() {
  10.     }
  11.    
  12.     public Vaca(int id, String nombre, Establecimiento establecimiento) {
  13.         this.id = id;
  14.         this.nombre = nombre;
  15.         this.establecimiento = establecimiento;
  16.     }
  17.  
  18.     public Establecimiento getEstablecimiento() {
  19.         return establecimiento;
  20.     }
  21.  
  22.     public void setEstablecimiento(Establecimiento establecimiento) {
  23.         this.establecimiento = establecimiento;
  24.     }
  25.  
  26.     public int getId() {
  27.         return id;
  28.     }
  29.  
  30.     public void setId(int id) {
  31.         this.id = id;
  32.     }
  33.  
  34.     public String getNombre() {
  35.         return nombre;
  36.     }
  37.  
  38.     public void setNombre(String nombre) {
  39.         this.nombre = nombre;
  40.     }
  41.    
  42. }

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.

Etiquetas: mysql, netbeans, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.
SEO by vBSEO 3.3.2