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

Registros duplicados

Estas en el tema de Registros duplicados en el foro de Java en Foros del Web. Intento no duplicar registro en mi base de datos con el siguiente codigo: void jButton2_actionPerformed(ActionEvent e) { try { String snombre = String.valueOf(nombre.getText()); String sedad ...
  #1 (permalink)  
Antiguo 07/07/2011, 06:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 7 meses
Puntos: 3
Registros duplicados

Intento no duplicar registro en mi base de datos con el siguiente codigo:


void jButton2_actionPerformed(ActionEvent e) {

try {

String snombre = String.valueOf(nombre.getText());
String sedad = String.valueOf(edad.getText());
String sdni = String.valueOf(dni.getText());
int nsuma = Integer.parseInt(suma.getText());
Connection c;
PreparedStatement ps;
String str = "jdbc:odbc:PEMPLEADO2";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection(str);
ps = c.prepareStatement("Insert Into EMPLEADO(nombre,edad,dni,pa)values(?,?,?,?)");
ps.setString(1, snombre);
ps.setString(2, sedad);
ps.setString(3, sdni);
ps.setInt(4, nsuma);
ps.executeUpdate();
ps = c.prepareStatement("Select nombre,edad,dni,pa from EMPLEADO where not exists(Select nombre,edad,dni,pa from EMPLEADO where nombre='"+snombre+"' and edad='"+sedad+"' and dni='"+sdni+"' and pa='"+nsuma+"')");
ps.executeUpdate();



}
catch (Exception es2) {
es2.printStackTrace();
System.exit(0);
}
}


Y me sale el siguiente error:

java.sql.SQLException: No row count was produced

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpd ate(JdbcOdbcPreparedStatement.java:144)

at sintitulo6.Marco1.jButton2_actionPerformed(Marco1. java:373)

at sintitulo6.Marco1_jButton2_actionAdapter.actionPer formed(Marco1.java:725)

at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1786)

at javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(AbstractButton.java:1839)

at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:245)

at java.awt.Component.processMouseEvent(Component.jav a:5100)

at java.awt.Component.processEvent(Component.java:489 7)

at java.awt.Container.processEvent(Container.java:156 9)

at java.awt.Component.dispatchEventImpl(Component.jav a:3615)

at java.awt.Container.dispatchEventImpl(Container.jav a:1627)

at java.awt.Component.dispatchEvent(Component.java:34 77)

at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:3483)

at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3198)

at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3128)

at java.awt.Container.dispatchEventImpl(Container.jav a:1613)

at java.awt.Window.dispatchEventImpl(Window.java:1606 )

at java.awt.Component.dispatchEvent(Component.java:34 77)

at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)

at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)


Aver si me pueden ayudar con el error.

Si hay otra forma de que no se dupliquen registros por favor si me pudieran apoyar.
  #2 (permalink)  
Antiguo 07/07/2011, 08:18
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Registros duplicados

Hola, para no duplicar los registros deberías poner como Unique Key en tu tabla aquellos campos que no pueden duplicarse.
De todas formas, si quieres hacerlo así como lo estás haciendo ahora, primero deberías consultar si existe el registro y luego hacer el insert.
La exception que te da es porque al hacer el "SELECT FROM" en el PreparedStatement luego haces un executeUpdate(), cuando debería ser un executeQuery(), ya que estas consultando los datos, no vas a modificarlos.
Saludos
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 17/07/2011, 13:56
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Registros duplicados

Ya lo hice modificando mi tabla todos los campos a unique key pero me salen de igual los registros duplicados.
  #4 (permalink)  
Antiguo 19/07/2011, 03:48
Avatar de edjuradob  
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Registros duplicados

El error que te sale es java.sql.SQLException: No row count was produced
Eso quiere decir que no encontró ningún registro.
¿Has cambiado el executeUpdate() por el executeQuery que te ha dicho pablor21?
No debes cambiar todos los campos a unique key. Eso significaría que no podrías tener empleados con la misma edad ni con el mismo nombre, etc. El único que debe ser unique key es el dni y solo deberías compar ese campo.

Etiquetas: duplicados, registros, 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 13:09.