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.
You can use simple setString if the CLOB is under 32 KB. (That is, read the file into memory and then use setString).
See also an older post of mine (and another one) where I've discussed how to insert a BLOB. CLOB can be done in the same manner, just use the setCharacterStream() instead of setBytes().
I don't know exactly why your solution doesn't work. The ones I'm posting here are tried and tested. Other approaches, perhaps even database independent, are certainly possible too, but I didn't ever need anything else.