所以...我想使用JTable从数据库中删除一行,但我不知道为什么它不会被删除,也许DELETE isntruction的sintaxis是错误的...
borrar.addActionListener(new ActionListener()
{
public void actionPerformed(final ActionEvent e)
{
System.out.println(tabla_proveedor.getSelectedRow());
if (tabla_proveedor.getSelectedRow()!=-1){
id_borrado=datos_proveedor[tabla_proveedor.getSelectedRow()][0];
System.out.println(id_borrado);
try{
Statement st = conexion.createStatement();
st.executeUpdate("DELETE FROM `boticaebenezer`.`proveedores` WHERE `proveedores`.`id_proveedor` = id_borrado;'");
System.out.println("Se borró");
}
catch (SQLException s){
System.out.println("SQLException: " + s.getMessage());
System.out.println(s.getErrorCode());
}
}
}
});
像这样更新了我的程序,这是我从catch获得的错误。
SQLException:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'''附近使用正确的语法
1064
我不知道如何评估id_proveedor是否与String id_borrado具有相同的值
编辑:找到解决方案,真正的sitnaxis是:
st.executeUpdate(“DELETE FROM boticaebenezer
。proveedores
WHERE proveedores
。id_proveedor
='”+ id_borrado +“';”);
感谢您的帮助:)
答案 0 :(得分:1)
使用executeUpdate
进行数据库写入操作。另外,请使用PreparedStatement
来防范SQL Injection次攻击。
String sql = "DELETE FROM proveedores WHERE id_proveedor=?";
PreparedStatement preparedStatement = conexion.prepareStatement(sql);
preparedStatement.setString(1, "id_borrado");
int rows = preparedStatement.executeUpdate();
最后,始终在异常块中显示异常消息,以帮助解决SQLException
的问题。