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.