Foros del Web » Programación para mayores de 30 ;) » Java »

"Duplicate entry '1' for key 1" JAVAAA

Estas en el tema de "Duplicate entry '1' for key 1" JAVAAA en el foro de Java en Foros del Web. Hola, mi problema es: Tengo una tabla con clientes: DNI (PRIMARY KEY) NOMBRE APELLIDOS ---------------------------------------------------- 71424859 pepe lopez 71458991 paca garcia ... Al insertar un ...
  #1 (permalink)  
Antiguo 27/04/2007, 04:43
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Pregunta "Duplicate entry '1' for key 1" JAVAAA

Hola, mi problema es:

Tengo una tabla con clientes:

DNI (PRIMARY KEY) NOMBRE APELLIDOS
----------------------------------------------------
71424859 pepe lopez
71458991 paca garcia
...

Al insertar un nuevo cliente, si el nuevo DNI, es igual a alguno de la tabla (es decir, si ya existe, me da error porque es primary key), quiero controlar la excepción que me da!!
  #2 (permalink)  
Antiguo 27/04/2007, 10:21
 
Fecha de Ingreso: abril-2007
Mensajes: 76
Antigüedad: 17 años
Puntos: 3
Re: "Duplicate entry '1' for key 1" JAVAAA

me supongo que tendras que ir comprobando, es decir comparando, el dni introducido con todos los dni's de tu base de datos.
Pero solo es una idea de novato, tambien puedes controlar la excepcion y que te haga cuando entre en ella lo que tu quieras.
  #3 (permalink)  
Antiguo 28/04/2007, 23:54
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: "Duplicate entry '1' for key 1" JAVAAA

Hola:

Una opción es hacer la inserción y capturar la excepcion

try
{
// realiza la insercion
} cactch (Exception e)
{
// error
}

Otra opción es como dice power_3L hacer la comprobación antes de insertar. Te basta un select count(*) dni ... where dni=valor_a_insertar

Revisa lo de select count(*), que yo de sql ando un poco pez, pero la idea es que eso te devuelve cuantos hay con ese dni (en principio 1 o 0).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 29/04/2007, 13:49
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: "Duplicate entry '1' for key 1" JAVAAA

Las sentencias de inserción, eliminación y modificación, ejecutadas con el método executeUpdate(), lanzan excepciones de tipo SQLException.

Dentro del catch, puedes saber que es lo que pasó usando el método getWarnings()

Última edición por TolaWare; 29/04/2007 a las 14:18
  #5 (permalink)  
Antiguo 04/05/2007, 11:04
 
Fecha de Ingreso: abril-2007
Mensajes: 76
Antigüedad: 17 años
Puntos: 3
Re: "Duplicate entry '1' for key 1" JAVAAA

amigo chuidiang el count te devuelve el numero de filas que te devuelve la select 0.1.2.3.4......100...200 etc
  #6 (permalink)  
Antiguo 04/05/2007, 13:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: "Duplicate entry '1' for key 1" JAVAAA

Hola:

Efectivamente, si haces un select count(*) from tabla where clave=una_clave y count(*) te devuelve 1, quiere decir que esa clave existe y no puedes usarla, mientras que si devuelve cero es que está libre y se puede usar.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 04/05/2007, 14:27
Avatar de Markcoz  
Fecha de Ingreso: noviembre-2006
Mensajes: 158
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: "Duplicate entry '1' for key 1" JAVAAA

uhmmm buenos yo te preguntaria lo siguiente:
que base de datos utilizas? mysql, sql server etc.. etc... etc...,
porque no investigas si tu bd soporta que en la tabla pongas el primary key (dni) autoincrementable (esto incrementa de uno en uno el id ), y asi t evitas hacer tanto rollo que si preguntar si existe con algun select o cachar la exepcion, con el autoincrement dejas que el trabajo de la bd lo haga la bd y no tu.....

la desventaja q veo con el " select count(*) from tabla where clave=una_clave ", es que debe de ser recursivo hasta q t regrese cero y entonces tengas el id libre, pero si es una aplicacion donde accesan muchos usuarios es mucha perdidad de tiempo y de recursos averiguar en q id vas, ademas estarias haciendo el trabajo de la bd.
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 18:06.