Borrar dato de una tabla conectada a BD con Java

publicado por: Anonymous

El día de hoy recurro a uds con el fin de pedirles su ayuda para el siguiente problema. Resultado que tengo una tabla en JAVA que esta conectada a una BD(Mysql). Quiero eliminar un registro de est tabla pero al intentarlo me marca el siguiento error “incompatible types: String cannot be converted to int“.

A continuación el código del metodo eliminar

public boolean eliminarEmpleado(int cedula) {
    boolean resultado = false;

    try {
        String sql = "Delete from tercero where id = "+cedula;
        objConec.conectar();
        Statement st = objConec.conex.createStatement();
        int valor = st.executeUpdate(sql);
        if(valor>0){
            resultado = true;
        }
        objConec.conex.close();
        st.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Error al eliminar" + e.getMessage());
    }
    return resultado;
}

A continuació el código de mi botón de eliminar

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {                                            
    empleado objEmpleado = new empleado();

    //Asigno el modelo para el JTable
    DefaultTableModel modeloTabla = (DefaultTableModel) tblEmpleado.getModel();

    //Asigno el indice del elemento seleccionado
    int indice = tblEmpleado.getSelectedRow();

    //Asigno al campo cedula el elemto a eliminar
    //int cedula = Integer.parseInt((String)modeloTabla.getValueAt(indice,0));
    int cedula = (int) modeloTabla.getValueAt(indice, 0);

    //Elimino el registro de la tabla
    modeloTabla.removeRow(indice);

    //Elimino el registro
    boolean respuesta = objEmpleado.eliminarEmpleado("delete from empleado where cedula = '"+cedula+"' ");
}                                           

El error me lo marca en está línea

boolean respuesta = objEmpleado.eliminarEmpleado("delete from empleado where cedula = '"+cedula+"' ");

solución

Te recomiendo encarecidamente que cuando tengas que realizar concadenaciones en consultas de ese tipo uses prepared statement, puesto que esas concadenaciones son suceptibles a SQL Inyection. A continuación te dejo un ejemplo de como sería la consulta, en vez de usar un objeto statement se usa uno llamado preparedStatement:

public void eliminarEmpleado(int cedula){

 String consulta= "delete from empleado where cedula = ?";
 preparedStatement = conexion.prepareStatement(consulta);
 preparedStatement .setInt(1, cedula);
 preparedStatement .executeUpdate();

}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published.