@Override
    public Boolean modificarCliente(TCliente cliente) throws Exception 
    {
        Statement query = null;
        Connection connection = null;        
        String contenido_query = "UPDATE Clientes SET DNI='" + cliente.getDNI() + "', Nombre='" + cliente.getNombre() 
                + "', Apellidos='" + cliente.getApellidos()+ "', Fecha_nacimiento=STR_TO_DATE('" + cliente.getFechaNacimiento() + "', '%d/%m/%Y'), Tipo='"; 
        String final_query = "WHERE id_cliente = " + cliente.getId() + ";";
        try
        {
            connection = (Connection) TransactionManager.obtenerInstanacia().getTransaccion().getResource();
            query = connection.createStatement();
        }
        catch (SQLException e)
        {
            throw new SQLException("No se ha podido realizar la conexión con la base de datos. \nEs posible que haya olvidado crear o iniciar la transacción"
                    + "\nError: " + e.getMessage());
        }
        
        //Diferenciar tipo de cliente
        if (cliente.getClass().equals(TClienteNormal.class))
        {            
            TClienteNormal temp = (TClienteNormal) cliente;
            contenido_query += "normal' " + final_query;
            try
            {
                //por si acaso estuviera en la otra tabla, lo borro
                query.executeUpdate("DELETE FROM ClientesVip where id_cliente = '" + cliente.getId() + "';");
            }
            catch (SQLException ex)
            {
                throw new SQLException("No se ha podido modificar cliente \nError: " + ex.getMessage());
                   
            }
            try
            {
                //Si ha cambiado de VIP a Normal, hay que darlo de alta, en otro caso, saltará al cath
                query.executeUpdate("INSERT INTO ClientesNormales(id_cliente,QuiereVip) VALUES('" + temp.getId() + "', '" + temp.isQuierevip() + "');"  );
            }
            catch (SQLException ex)
            {
                try
                {
                    query.executeUpdate("UPDATE ClientesNormales SET QuiereVip='" + temp.isQuierevip() + "');");
                }
                catch (SQLException ex2)
                {
                    throw new Exception("Error al actualizar en la tabla de clientes normales\nError: " + ex2.getMessage());
                }
            }
                    
        }
        else
        {
            TClienteVip temp = (TClienteVip) cliente;            
            contenido_query += "VIP' " + final_query;
            try
            {
                //por si acaso estuviera en la otra tabla, lo borro
                query.executeUpdate("DELETE FROM ClientesNormales where id_cliente = '" + cliente.getId() + "';");
            }
            catch (SQLException ex)
            {
                throw new SQLException("No se ha podido modificar cliente \nError: " + ex.getMessage());
                   
            }
            try
            {
                //Si ha cambiado de VIP a Normal, hay que darlo de alta, en otro caso, saltará al cath
                query.executeUpdate("INSERT INTO ClientesVip(id_cliente,Financiacion) VALUES('" + temp.getId() + "', '" + temp.getFinanciacion()+ "');"  );
            }
            catch (SQLException ex)
            {
                try
                {
                    query.executeUpdate("UPDATE ClientesVip SET Financiacion=" + temp.getFinanciacion() + ";");
                }
                catch (SQLException ex2)
                {
                    throw new Exception("Error al actualizar en la tabla de clientes VIP\nError: " + ex2.getMessage());
                }
            }
        }
        System.out.println(contenido_query);
        query.executeUpdate(contenido_query);
        return false;
    }