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

Problemas para actualizar registros

Estas en el tema de Problemas para actualizar registros en el foro de Java en Foros del Web. Hola a todos, tengo un problema para la actualización de registros sobre un Sql Server 2000. Estoy realizando una aplicación Java utilizando como conexión al ...
  #1 (permalink)  
Antiguo 21/09/2008, 19:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
Problemas para actualizar registros

Hola a todos, tengo un problema para la actualización de registros sobre un Sql Server 2000.
Estoy realizando una aplicación Java utilizando como conexión al driver JDBC SP3 de Microsoft (la última versión que salió).
El problema está cuando quiero actualizar 2 campos de un resultset más de una vez, es decir, la primera vez que invoco al método updaterow() sobre un registro actualiza perfectamente pero si quiero volver a actualizar el mismo registro me devuelve una excepción "Row update failed".
Puedo por ejemplo actualizar varios registros sin problemas, pero cuando caigo sobre uno ya actualizado ahí me devuelve la excepción.
Para la conexión utilizo:

conexion.createStatement(ResultSet.TYPE_SCROLL_SEN SITIVE, ResultSet.CONCUR_UPDATABLE)

Y el query es el siguiente:
"SELECT nro_movil_requerido,nro_usuario_telefonista,(CONVE RT(varchar(10), fecha_hora_entrada, 103) + ' - ' + CONVERT(varchar(5), fecha_hora_entrada, 114)) AS 'fecha_hora_entrada',comentario,(CONVERT(varchar(1 0), fecha_hora_inicio_viaje, 103) + ' - ' + CONVERT(varchar(5), fecha_hora_inicio_viaje, 114)) AS 'fecha_hora_inicio_viaje',(CONVERT(varchar(10), fecha_hora_fin_viaje, 103) + ' - ' + CONVERT(varchar(5), fecha_hora_fin_viaje, 114)) AS 'Fecha y hora',cod_motivo_cancelacion,(CONVERT(varchar(5), fecha_hora_invitacion, 114)) AS 'hora_invitacion',(CONVERT(varchar(5), fecha_hora_resolucion, 114)) AS 'hora_resolucion',nro_movil_asignado AS 'Móvil',CONVERT(NUMERIC(8,2), importe_pactado) AS importe_pactado,nro_conductor AS 'Chofer',km_recorridos_libre,velocidad_maxima_libr e,km_recorridos_ocupado,velocidad_maxima_ocupado,m inutos_cobrados_espera,CONVERT(NUMERIC, nro_telefono) AS Cliente,(nombre_calle + ' ' + CONVERT(varchar(4), numero)) AS 'Salida',CONVERT(NUMERIC(8,2), importe) AS 'importe_formateado',nro_ctacte,DATEDIFF(mi, fecha_hora_inicio_viaje, fecha_hora_fin_viaje) AS 'duracion_viaje',importe,nro_viaje , * FROM dbo.VIAJES_HISTORICOS Where fecha_hora_inicio_viaje IS NOT NULL And fecha_hora_fin_viaje >= '21/09/2006 00:00' And fecha_hora_fin_viaje <= '19/12/2007 23:59:59' And cod_motivo_cancelacion = 0 Order by fecha_hora_fin_viaje"

Los campos que quiero modificar son importe y nro_ctacte de la siguiente manera:
rs.updateBigDecimal("importe", new BigDecimal(edit_importe.getText().trim()))
rs.updateInt("nro_ctacte", Integer.parseInt(edit_ctacte.getText().trim()))

Si vuelvo a ejecutar la consulta antes de tratar de modificar un registro ya modificado no tengo este problema:
rs = stmt.executeQuery(sql)
pero sería totalmente ineficiente ejecutar la consulta cada vez que quiero actualizar un registro.

Otra cosa que probé para tratar de solucionar esto es mediante PreparedStatement, ahí no hay problema pero al invocar al método de resultset refreshrow() para actualizarlo con respecto a la base no lo actualiza, tampoco me muestra una excepción.


Si alguien me puede ayudar con este tema estaría muy agradecido.
  #2 (permalink)  
Antiguo 22/09/2008, 11:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas para actualizar registros

Probando me di cuenta que si espero un tiempo (unos 30 o 40 segundos) luego de actualizar un registro, puedo actualizarlo por segunda vez. Es como si quedara bloqueado durante un tiempo y luego lo libera. Esto si lo hago mediante updaterow(), si lo hago con una sentencia sql utilizando "update <tabla> Set ... Where ..." no tengo este problema, pero como mensioné en el post anterior, queda inconsistente el ResultSet ya que el método refreshRow() no funciona.

Agradezo cualquier tipo de ayuda que me puedan brindar.
saludos
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 23:23.