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

Problema con INSERT

Estas en el tema de Problema con INSERT en el foro de Java en Foros del Web. Buenas, Agradecería mucho si alguien pudiera solucionarme el problema que tengo con el siguiente trozo de código; todo funciona bien excepto la siguiente sentencia: stmt.executeUpdate("INSERT ...
  #1 (permalink)  
Antiguo 21/07/2008, 13:42
 
Fecha de Ingreso: julio-2008
Mensajes: 19
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema con INSERT

Buenas,

Agradecería mucho si alguien pudiera solucionarme el problema que tengo con el siguiente trozo de código; todo funciona bien excepto la siguiente sentencia:
stmt.executeUpdate("INSERT INTO TB_Llamadas VALUES ("+cod+",'"+fecha+"','"+desc+"',"+codTipo+","+codE stado+",'"+usuario+"','"+contacto+"')");
Lo que ocurre es que tras pasar por aquí entra en el catch y por lo tanto no se realiza la inserción en la base de datos.


Código:
public static boolean insertarLlamada(Llamada llamad)
    {
        boolean enc=false;
        try 
        {

            Statement stmt=ConectarBD.getstmt();
            int cod=llamad.getCod();
            ResultSet rs=stmt.executeQuery("SELECT * FROM TB_LLamadas WHERE LlaCod="+cod+" ");
            if(rs.next())
            {

                enc=true;
            
            }
            else
            {
                String usuario=llamad.getNomUsuario();
                String contacto=llamad.getNomContacto();
                Fecha f=llamad.getFecha();
                Hora h=llamad.getHora();
                String fecha=Integer.toString(f.getDia())+" "+f.getMes()+" "+Integer.toString(f.getAnyo())+" "+Integer.toString(h.getHora())+":"+Integer.toString(h.getMinuto());
                String desc=llamad.getDesc();
                int codTipo=llamad.getcodTipo();
                int codEstado=llamad.getcodEstado();
                stmt.executeUpdate("INSERT INTO TB_Llamadas VALUES ("+cod+",'"+fecha+"','"+desc+"',"+codTipo+","+codEstado+",'"+usuario+"','"+contacto+"')");
            }
           
        }
        catch (SQLException ex)
        {
            ex.printStackTrace();
        } 
        return enc;
    }
    
    
}
Gracias
  #2 (permalink)  
Antiguo 21/07/2008, 14:35
 
Fecha de Ingreso: junio-2008
Mensajes: 168
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con INSERT

utiliza el while y en caso de querer recorrer la tabla entera en busca de todos o en caso de q solo kieras encontrar un determinado elemnto usa una variable encontrado...

ejemplo de ayuda:

public void guardarBDusuario(Usuario pUsuario, Connection pCon) {
String sql = "INSERT INTO usuario VALUES('" +
pUsuario.obtDni() +
"','" + pUsuario.obtTipo() +
"','" + pUsuario.obtNom() +
"','" + pUsuario.obtEmail() +
"','" + pUsuario.obtCont()+
"','" + pUsuario.obtApellido() +
"','" + pUsuario.obtDireccion() +
"','" + pUsuario.obtPoblacion()+
"','" + pUsuario.obtProvincia() +
"','" + pUsuario.obtTelefono()+ "');";


try {
Statement st = pCon.createStatement();
st.executeUpdate(sql);
System.out.println("Usuario añadido.");
st.close();
} catch (SQLException a) {
System.out.println(a);
} catch (Exception a) {
System.out.println(
"Se ha producido un error desconocido durante la conexión a la base de datos.");
}
}


Espero q t sirva de ayuda...
  #3 (permalink)  
Antiguo 21/07/2008, 15:21
 
Fecha de Ingreso: julio-2008
Mensajes: 19
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con INSERT

Gracias por tu respuesta pero...el ejemplo que me has dado es más o menos lo que tengo hecho yo no? Mi problema es simplemente que tras pasar por la sentencia del INSERT entra en el catch y no entiendo la razón.
  #4 (permalink)  
Antiguo 21/07/2008, 15:28
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Problema con INSERT

Que error te marca?
  #5 (permalink)  
Antiguo 21/07/2008, 16:05
 
Fecha de Ingreso: julio-2008
Mensajes: 19
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con INSERT

Ya he solucionado el problema el código que he puesto antes estaba bien sólo que había un pequeño problema en la BD.

Ahora tengo otro problemilla con otro INSERT es igual que el anterior, todos los valores que le paso son strings y esta vez me da este error: java.sql.SQLException: [Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

Si alguien sabe que significa ese error y puede ayudarme lo agradecería
  #6 (permalink)  
Antiguo 22/07/2008, 00:16
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Problema con INSERT

De todas formas:
.- No deberias usar un statement hasta que no hayas cerrado el anterior.
.- No es buena idea crear sentencias SQL a base de concatenar parametros, ya que hace tu programa susceptible a SQLInjection y a problemas con los caracteres especiales. Es mejor utilizar PreparedStatement.
.- Tampoco es buena idea escribir la clausula INSERT con solo los values, sin especificar las columnas. Eso hace que tu programa dependa del orden en que se han definido los campos y del numero de campos definidos. Si/cuando se modifique la BDD, cosa no tan rara, puede darte problemas que no esperas.

En cuanto al error... es dificil decirlo sin ver el insert, pero parece que a la sentencia le falta algun parametro.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 22/07/2008, 16:32
 
Fecha de Ingreso: julio-2008
Mensajes: 19
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con INSERT

GreenEyed gracias por tus consejos ya los he puesto en práctica Yo también pensé lo de que falta algún parámetro pero no es así. A ver si consigo solucionarlo al fin, sino ya pediré ayuda de nuevo.
Un saludo
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 05:51.