我无法使用JTable从我的SQL数据库中删除

时间:2013-05-16 01:02:56

标签: java mysql sql jdbc jtable

所以...我想使用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 boticaebenezerproveedores WHERE proveedoresid_proveedor ='”+ id_borrado +“';”);

感谢您的帮助:)

1 个答案:

答案 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的问题。