If yes, why are there still so many successful SQL injections? Just because some developers are too dumb to use parameterized statements?
Because most code isn't written with security in mind, and management, given a choice between adding features (especially something visible that can be sold) and security/stability/reliability (which is a much harder sell) they will almost invariably choose the former. Security is only a concern when it becomes a problem.