@Override
    public int altaCliente(TCliente cliente) throws Exception
    {
        Statement query = null;
        Connection connection = null;
        int ret = -1;
        //insercion cliente generico
        String contenido_query = "INSERT INTO Clientes(DNI, Nombre, Apellidos, Fecha_nacimiento, Tipo) VALUES ('" + cliente.getDNI() + "', '" + cliente.getNombre() + "', '" + cliente.getApellidos() + "', STR_TO_DATE('" + cliente.getFechaNacimiento() + "', '%d/%m/%Y'), '";
        //insercion cliente especializado
        String contenido_query_especializada = null;        
                
        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());
        }
         try
        {
            if (cliente.getClass().equals(TClienteNormal.class))
            {
                contenido_query += "normal');";                
            }
            else
            {
                contenido_query += "VIP');";                
            }
            System.out.println(contenido_query);
            query.executeUpdate(contenido_query);
        }
        catch (SQLException e)
        {
            throw new SQLException("No se ha podido dar de alta el cliente. Posiblemente ya exista\nError: " + e.getMessage() + "\n" + e.getSQLState() + "\n" + e.getErrorCode());
        }
         
         //Si no ha saltado excepción en este punto es porque se ha dado el alta correctamente 
         //Buscamos el id del nuevo usuario
         query.executeQuery("SELECT id_cliente FROM Clientes WHERE DNI = " + "\"" + cliente.getDNI() + "\"" + ";");
            
         ResultSet rs = query.getResultSet();
            rs.next();
            int id = rs.getInt(1);
            if (cliente.getClass().equals(TClienteNormal.class))
            {
                TClienteNormal temp = (TClienteNormal) cliente;                
                contenido_query_especializada = "INSERT INTO clientesnormales(id_cliente, QuiereVip) VALUES (" + id + ", " + temp.isQuierevip() + ");";
            }
            else
            {
                TClienteVip temp = (TClienteVip) cliente;                 
                contenido_query_especializada = "INSERT INTO ClientesVip(id_cliente, Financiacion) VALUES (" + id + ", " + temp.getFinanciacion() + ");";
            }
            System.out.println(contenido_query_especializada);
            query.execute(contenido_query_especializada);
         return id;
    }