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
Hola.
Intenta algo así.
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.
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
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í.
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.