La conversion de la Chaîne de Clob à l'aide de setString() ne fonctionne pas

Je suis en train de convertir une Chaîne en un Clob à stocker dans une base de données. J'ai le code suivant:

Clob clob = connection.createClob();
System.out.println("clob before setting: " + clob);
clob.setString(1,"Test string" );
System.out.println("clob after setting: " + clob);
System.out.println("clob back to string: " + clob.toString());

Lorsque je l'exécute les Clob n'est pas définie, la sortie est comme suit:

clob before setting: org.apache.derby.impl.jdbc.EmbedClob@1f5483e
clob after setting: org.apache.derby.impl.jdbc.EmbedClob@1f5483e
clob back to string: org.apache.derby.impl.jdbc.EmbedClob@1f5483e

Partout où je regarde, dit d'utiliser le setString méthode, je n'ai aucune idée de pourquoi cela ne fonctionne pas pour moi.

Vous pouvez simplement utiliser setString() sur le PreparedStatement. Pas besoin de créer l'intermédiaire Clob instance.
Vous penser, à tort, que Clob.toString() renvoie le Clob contenu. Ce n'est pas le cas. Votre sortie de débogage, par conséquent, ne pas aider à diagnostiquer le problème. Et je ne suis pas sûr que vous avez un problème à tous.
J'essaie d'insérer une ligne dans une table qui a des Clob comme type de données, donc je suis en utilisant une instruction préparée avec une variable '?', et puis d'essayer de les lier à un Clob à cette variable. Je ne comprends pas ce que vous avez suggéré, mais je suppose qu'il ne s'applique pas à moi.
comment puis-je accéder à la clob contenu? la méthode toString() est ce que google suggère, et il retourne une chaîne de caractères, donc je ne vois pas le problème
Comme je l'ai dit: il n'est pas nécessaire d'utiliser le Clob instance. setString() directement sur la déclaration suffira. Voir ma réponse.

OriginalL'auteur Bugalugs Nash | 2013-09-22