Foro de elhacker.net

Programación => Java => Mensaje iniciado por: soser en 22 Abril 2011, 10:14 am



Título: Borrar en una base de datos MySQL
Publicado por: soser en 22 Abril 2011, 10:14 am
Buenas, estoy haciendo una aplicacion que accede a una base de datos y hace las operaciones basicas de insertar, consultar, borrar y actualizar...el punto es que quiero borrar un elemento de una tabla pero me marca el siguiente error

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'XXX' in 'where clause'

y el codigo que hize para borrar es:
Código:
private void borrarMousePressed(java.awt.event.MouseEvent evt) {
    String clave=clav.getText().toString();
        boolean b=false;
        cn=new DbConnection();
        String s2;
       
        try
        {
            Statement s=cn.getConnection().createStatement();
            ResultSet rs=s.executeQuery("select * from Paciente");
            //while(rs.next())
            //{
               // s2=rs.getString(1);
               // if(s2.equals(clave))
               // {
                    b=true;
                    int n=s.executeUpdate("delete from Paciente where columna="+clave);
                    JOptionPane.showMessageDialog(null,"Se ha eliminado al paciente","Informacion!!",JOptionPane.ERROR);
             //   }
            //}
            cn.desconectar();
            if(!b)
            {JOptionPane.showMessageDialog(null,"No se ha encontrado el paciente a eliminar", "-_-",JOptionPane.INFORMATION_MESSAGE);}
        }
        catch(Exception e){e.printStackTrace();}
    }

Ya he intentado varias maneras de solucionarlo pero ninguna me funciona, asi que si alguien me pudiese ayudar con alguna idea o sugerencia, igual seguire buscando para ver  si logro solucionar mi problema.
Desde ya gracias


Título: Re: Borrar en una base de datos MySQL
Publicado por: 1mpuls0 en 22 Abril 2011, 10:47 am
Hola.

Intenta algo así.

Código
  1. private void borrarMousePressed(java.awt.event.MouseEvent evt) {
  2.    String clave=clav.getText().toString();
  3.        boolean b=false;
  4.        cn=new DbConnection();
  5.        String s2;
  6.  
  7.        try
  8.        {
  9.            Statement s=cn.getConnection().createStatement();
  10.    //ResultSet rs = s.executeQuery("SELECT columna FROM Paciente WHERE nombrePaciente='Pedro'");
  11.               ResultSet rs = s.executeQuery("SELECT * FROM Paciente");
  12. rs.next();
  13. int id = rs.getInt("columna");
  14.                s.executeUpdate("DELETE FROM Paciente WHERE columna="+clave);
  15.  
  16.                b=true;
  17.                JOptionPane.showMessageDialog(null,"Se ha eliminado al paciente","Informacion!!",JOptionPane.ERROR);
  18.  
  19.            cn.desconectar();
  20.            if(!b)
  21.            {JOptionPane.showMessageDialog(null,"No se ha encontrado el paciente a eliminar", "-_-",JOptionPane.INFORMATION_MESSAGE);}
  22.        }
  23.        catch(Exception e){e.printStackTrace();}
  24. }
  25.  
  26.  

Modifico:
Por cierto ¿de qué tipo de dato es "columna" en tu base de datos?


Saludos.



Título: Re: Borrar en una base de datos MySQL
Publicado por: soser en 23 Abril 2011, 03:25 am
Darhius gracias por responder, el tipo de dato de la columna es string, y ya lo he solucionado, solo era cosa de agregar unas ' ' enla variable de la siguiente forma:

int n=s.executeUpdate("delete from Paciente where columna="+"'"+clave+"'");

De todas maneras gracias   ;D


Título: Re: Borrar en una base de datos MySQL
Publicado por: 1mpuls0 en 23 Abril 2011, 03:29 am
Si exacto, por eso preguntaba de que tipo es columna xD, si es int no hay problema, pero si es char o tipo texto tienes que agregar comillas simples =)

Aunque también puedes dejarlo así.

Código
  1. int n=s.executeUpdate("delete from Paciente where columna='"+clave+"'");

Solo un consejo, lee un poco sobre las "reglas" o recomendaciones para base de datos, por ejemplo en vez de "columna" puede que sea mas correcto PacienteId etc.

Saludos.