On Wed, 11 Aug 2004 10:32:04 -0700, Wiebe de Jong <[EMAIL PROTECTED]> wrote:
> I had a similar problem, which I discovered when one of my users tried to
> enter a street address containing an apostrophe. Since I use apostrophes to
> delineate my text strings in my SQL statements, this caused a database
> error. I fixed it by not allowing apostrophes to be entered into any of the
> test fields.
>
I hope you never have a customer named O'Reilly :-).
> I admit this is overly restrictive, but I don't know how to get the
> apostrophe into my database otherwise. How would you do it Craig?
>
> For SQL destined test, I disallow \ and '.
If I'm doing the SQL myself, I always use prepared statements:
String streetAddress = "..."; // String may have "\" and "'" characters in it
PreparedStatement stmt = conn.prepareStatement
("UPDATE CUSTOMER SET STREET_ADDRESS=? WHERE CUSTID=?");
stmt.setString(1, streetAddress);
stmt.setInt(2, custId);
stmt.executeUpdate();
and let the JDBC driver take care of getting the sensitive characters
escaped as needed.
(Of course, if you're using a persistence tier abstraction like EJB or
JDO or JDBC RowSets or Hibernate or iBatis et. al., you don't need to
worry about any of this -- it all happens automatically for you.)
> For XML destined text, I disallow <, >, &, \, and ".
For XML, I use one of several strategies depending on the detailed situation:
* Recognize that XML allows either " or ' as attribute delimiters,
so if a string includes one kind, just use the other.
* Write or use an XML serializer that translates "&" to "&"
and so on for me.
* If the XML I am writing is actually markup on a page, use
JSF components ... JSF includes APIs that do all the escaping
for you.
>
> Wiebe de Jong
Craig
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]