I found what works is to go for a "walk." However you need to realize it's training and you're not walking to get anywhere in particular. I tried the "go into a field and go the opposite way that puppy wants to go." Didn't really work because then she would just pull in a big circle and never come back to me
So grab some treats and let's go on a "walk!" I've done a few things to see what works best. Also, I've found my puppy does better after running her to burn off energy
One thing I did was I'd reward her when she was waling next to me. After only a few treats, she knew "I get treats if I'm next to dad!" And was doing a lot better
Another trick is when puppy pulls, stop and walk back a few feet (I've been adding "heel!" to this). You may have to pull your puppy to you. Then stand there for a moment (One member says they will stand there for 2-3mins and takes forever to go anywhere, but it's training so it's not the destination that matters). If puppy is good, treat. Hopefully after a few times, pup will understand that they only get treats if they're next to you
I feel that the treat thing works a little better. I haven't been able to do a decent training session in a few wks, or forget my treats when I do do a small walk in my complex
For the whining in the car, I don't leave my pup in the car for that reason (minus 2 occasions). I had to do it the other day to get dinner, but that was only after she had been running around at the in-laws for 7hrs, so she was too tired to care that I left for 10mins
On that note, how much exercise does your puppy get? If they're bored or under stimulated, they can be a handful
Sounds like you may have a Velcro dog like I do, and they hate it if you're not in their sight or next to you. I found that some crate games can help with that. Crate and leave the room quickly, 5-10sec, and come back. Let pup out and treat. Slowly increase the time away. Again, if they whine, then you're stuck waiting for them to stop, but that means you may have gone too fast. When done right, they will learn that sometimes you need to leave for a short while, but that's ok
Sometimes it's just tough love
There must be some kind of reward for him or else he wouldn't be so persistent. Try the following. Go back to square one. Off leash in a safe area and start walking without paying attention to him (keep him in the corner of your eye). As soon as he is next to you, say, "yes!" and give him a treat. Then start walking again. Repeat and repeat. No more than 10 minutes. Once he starts to get it you can wait with the "Yes!" to keep him next to you for a few more seconds etc. Also include turns to make it more challenging. If he does need to be leashed, use a 30 ft line. Take it easy, you have about 12 more years ahead of of, hopefully more but by then he'll know.
Consider a class.
I've done this a few times at the in-laws. I would walk around their property. I had no treats on me, but every time my pup came to me, I'd give pets/ praise and then go back to walking. I have not done this in a while because I'm usually throwing the ball for their border collie and my pup will chase her. My pup is a little too distracted with the BC is out with us