This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I didn't write the original database access/pooling code for this web app, and right now we've got an issue with single quotes in data not being escaped properly. I've read that PreparedStatement takes care of this for you, but I've only started using it for a few CLOB/BLOB inserts, etc. Right now, the majority of our updates run through the following method, and this method gets called 45 times in our code:
It seems like a quick and dirty but decent short-term solution could be to just change this to use a PreparedStatement (without any parameters). I don't have much time at the moment, and we just need something that will work without introducing other issues. While I'm at it, should I also change the following method that is used for the majority of our reads (SELECTs) out of the database?
Originally posted by Stephen Huey: It seems like a quick and dirty but decent short-term solution could be to just change this to use a PreparedStatement (without any parameters).
This will have zero effect, since it's the parameters that have their quotes (and other special characters) escaped. Unfortunately, you can't just apply the munging to the whole query -- you need to apply it to the parameters individually.
The simplest solution, still using your code above, would be to create a utility method to do the munging and call it from all the places where you call the code above while building the query. This will likely be "good enough" until you can take the time to switch to using prepared statements.