0

所以......我想使用JTable从数据库中删除一行,但我不知道为什么它没有被删除,也许DELETE istruction的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());

            }

        }
        }


});

像这样更新了我的程序,这是我从捕获中得到的错误。

SQLException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''' 附近使用正确的语法

1064

我不知道如何评估 id_proveedor 是否与字符串 id_borrado 具有相同的值

编辑:找到解决方案,真正的sitnaxis是: st.executeUpdate("DELETE FROM boticaebenezer. proveedoresWHERE proveedores. id_proveedor= '" + id_borrado + "';");

感谢您的所有帮助:)

4

1 回答 1

1

用于executeUpdate数据库写操作。也PreparedStatement可用于防止SQL 注入攻击。

String sql = "DELETE FROM proveedores WHERE id_proveedor=?";
PreparedStatement preparedStatement =  conexion.prepareStatement(sql);
preparedStatement.setString(1, "id_borrado");

int rows = preparedStatement.executeUpdate();

最后,始终在 Exception 块中显示异常消息,以帮助找出SQLException.

于 2013-05-16T01:05:55.497 回答