If you do end up giving shots, don't fool around with trying to give them by hand. You'll hurt the dog and stress yourself out. I actually poked myself with a needle accidentally once when my dog became irate.
Get an Autoject. We've had one for months now and pup doesn't mind it at all. Train your dog with it. Start with a ballpoint pen...tape the end up, click it against their skin, and hold them still. Reward them with a small piece of their food (we just use a few pieces of the prescription food from the vets as "treats).
Switch over to the Autoject, but don't use the needle. Get the dog used to having it against the skin, and get them used to freezing at the sound of the clicking noise. Get them to associate the sound with the reward.
I have probably one of the most high strung breeds there is (Chihuahua) and she does a great job with her shots. Before, she became really agitated and wanted to bite me. No more.
Video showing it in action:
[youtube]https://www.youtube.com/watch?v=S0o58prJfdo[/youtube]
At the time, the Autoject 2 for humans was the cheaper option than the veterinary version. Now, the veterinary version is cheaper. They are identical. Amazon link:
Pet Fine Auto Injector