Borrar en una base de datos MySQL

Iniciado por soser, 22 Abril 2011, 10:14 AM

0 Miembros y 1 Visitante están viendo este tema.

soser

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:

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

1mpuls0

#1
Hola.

Intenta algo así.

Código (java) [Seleccionar]

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 columna FROM Paciente WHERE nombrePaciente='Pedro'");
              ResultSet rs = s.executeQuery("SELECT * FROM Paciente");
rs.next();
int id = rs.getInt("columna");
               s.executeUpdate("DELETE FROM Paciente WHERE columna="+clave);
           
               b=true;
               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();}
}



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


Saludos.

abc

soser

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

1mpuls0

#3
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 (java) [Seleccionar]
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.

abc