I was told a bad crank position sensor would go with the P0300 code, but it sounds like you have other issues, too. Still, I'd check it just in case. A bad injector should give a cylinder with the code (p0301,2,3,etc.), and bad O2 sensor or cat should throw more codes.