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

no me funciona el update

Estas en el tema de no me funciona el update en el foro de Java en Foros del Web. Hola, tengo el siguientes codigo: Código: .... aqui va lo demas if (conn != null) { String actualiza ="update RESPUESTAS set CONTADOR=? where SURVEYID=? AND ...
  #1 (permalink)  
Antiguo 23/10/2006, 12:19
 
Fecha de Ingreso: marzo-2002
Mensajes: 81
Antigüedad: 22 años, 1 mes
Puntos: 0
no me funciona el update

Hola, tengo el siguientes codigo:

Código:
 .... aqui va lo demas

if (conn != null) 
           { 
                        
 
           String actualiza ="update RESPUESTAS set CONTADOR=? where SURVEYID=?  AND QUESTIONID=? AND ANSWERID=? ";
              PreparedStatement insertar = conn.prepareStatement(actualiza);
              insertar.setInt(1,contador);
              insertar.setInt(2,Integer.parseInt(ID));
             insertar.setInt(3,Integer.parseInt(questionID));
             insertar.setInt(4,Integer.parseInt(answerID));
             insertar.executeUpdate();
             
      // }
             
            
              
             
           
             // this.limpiaVar();
             //JOptionPane.showMessageDialog(null, entrada,nombre, JOptionPane.ERROR_MESSAGE);        
              conn.close();
              }
 .... aqui va lo demas
lo curioso es que no me marca errores ni al compilar ni al ejecutar, pero no me acutaliza la tabla, pero usando el toad con la query (sustituyendo los ? po enteros) si funciona.. que creen que sea?

nota.. los campor ID, questionID y answerID se reciben como Strings en la funcion, por eso es que los convierto a enteros....solo puse la parte de la query.

Gracias ñ_ñ
__________________
Aburrido? .... www.desaburrete.com mi nueva web para pasar el rato
  #2 (permalink)  
Antiguo 23/10/2006, 12:41
 
Fecha de Ingreso: marzo-2002
Mensajes: 81
Antigüedad: 22 años, 1 mes
Puntos: 0
Cambie la sentencia:
Código:
insertar.executeUpdate();
por:
Código:
int n=insertar.executeUpdate();
             JOptionPane.showMessageDialog(null, String.valueOf(n), "Info contador N", JOptionPane.ERROR_MESSAGE);
      // }
y el valor de n es 1, por lo que se supone que si se realiza el update, pero no se refleja en mi tabla @_@
__________________
Aburrido? .... www.desaburrete.com mi nueva web para pasar el rato
  #3 (permalink)  
Antiguo 23/10/2006, 13:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
¿Puede ser que tengas el autoCommit a false y que no hagas un commit?
  #4 (permalink)  
Antiguo 23/10/2006, 14:36
 
Fecha de Ingreso: marzo-2002
Mensajes: 81
Antigüedad: 22 años, 1 mes
Puntos: 0
Gracias, si es asi como podria saberlo?, ya que los insert y los select si me los hace bien, debe mirar en el toad o en mi codigo?, mientras les pongo el codigo completo de la funcion, aunque quiza se un poco extenso:

Código:
       public void aumentaConteo(String ID ,String questionID, String answerID,int contador){
  
       Connection conn = null;
   
   int questID=Integer.parseInt(questionID);
   questID=questID-1;
        try
            { 
                    
            Class.forName("oracle.jdbc.OracleDriver"); 

            conn = DriverManager.getConnection(url,login,password); 

           if (conn != null) 
           { 
                        
 
           String actualiza ="update RESPUESTAS set CONTADOR=? where SURVEYID=?  AND QUESTIONID=? AND ANSWERID=? ";
              PreparedStatement insertar = conn.prepareStatement(actualiza);
              insertar.setInt(1,contador);
              insertar.setInt(2,Integer.parseInt(ID));
             insertar.setInt(3,Integer.parseInt(questionID));
             insertar.setInt(4,Integer.parseInt(answerID));
             int n=insertar.executeUpdate();
             JOptionPane.showMessageDialog(null, String.valueOf(n), "Info contador N", JOptionPane.ERROR_MESSAGE);

              conn.close();
              }
                 else
             
                 JOptionPane.showMessageDialog(null, "No se puede conectar", "Error", JOptionPane.ERROR_MESSAGE);
                
                                 
              
              
    }//fin try
           catch(SQLException ex) 
        { 
                       JOptionPane.showMessageDialog(null, "No se puede conectar", "Error SQL", JOptionPane.ERROR_MESSAGE);       
           
        } 
        catch(ClassNotFoundException ex) 
        { 
         JOptionPane.showMessageDialog(null, "No se puede conectar", "Error", JOptionPane.ERROR_MESSAGE);
        } 
    
    }
Gracias de nuevo
__________________
Aburrido? .... www.desaburrete.com mi nueva web para pasar el rato
  #5 (permalink)  
Antiguo 23/10/2006, 15:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Prueba a añadir un
Código:
insertar.close();
conn.commit();
antes del conn.close();, a ver que tal.

PD: Por cierto, si te fijas, si te da un error SQL la conexion no se cerrara nunca, se saltara la instruccion del close, y eso puede dar a la larga problemas graves (Abrir un numero creciente de Conexiones a una BDD y no cerrarlas es una receta segura para cascar el acceso a una BDD)
  #6 (permalink)  
Antiguo 23/10/2006, 15:49
 
Fecha de Ingreso: marzo-2002
Mensajes: 81
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias man!!! si era lo del autocommit ñ_ñ

ya se soluciono!!
__________________
Aburrido? .... www.desaburrete.com mi nueva web para pasar el rato
  #7 (permalink)  
Antiguo 23/10/2006, 15:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Ummm, solo por puntualizar, no creo que fuera exactamente el autocommit, ya que por defecto esta a true. El problema es que si no haces un close() del PreparedStatement, puede que el autocommit no entre en efecto. Hasta puede depender del driver, pero de todas formas siempre es bueno hacer un close() de todo lo que se usa, Statements, PreparedStatement,Connection... para dejarlo todo bien... apañadito .
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 14:12.