While I can certainly see the advantages of using parameters for SQL queries, especially when dealing with datetimes and things like that, I’m still unsure about parameters as the only way to prevent SQL injection.
The fact is, I inherited an application and it has things like
"SELECT Field FROM Table WHERE Filter='"+userinput.Replace("'", "''")+"'"
all over the place. Now while those doesn’t look very pleasant to my eyes, and I wouldn’t mind rewriting them, my question is, do I need to? Try as I might, I can’t see a way to perform SQL injection with this.
No, it is not enough. It will do in a pinch, but it is a very weak alternative, and using parameterized queries or parameterized stored procedures is better, if your platform and/or RDBMS support either feature.
From
OWASP’s SQL Injection Prevention Cheat Sheet
There are more below
SQL injection — but why isn’t escape quotes safe anymore?
Sql Injection Myths and Fallacies
SQL Injection after removing all single-quotes and dash-characters