comment Instruction print (CallableStatement) en Java?
Comment puis-je imprimer cette OracleCallableStatement ?
ocstmt = (OracleCallableStatement) connection.prepareCall("{?= call
package.method(id => ?, name=>?)}");
ocstmt.registerOutParameter(1, OracleTypes.CURSOR);
ocstmt.setInt(2, obj.getId());
ocstmt.setString(3, obj.getName());
ocstmt.execute();
resultSet = ocstmt.getCursor(1);
Ce que je veux dire c'est comment je sais que ce que requête à la base de données, comment puis-je imprimer la requête? parce que parfois, il me donne une erreur du type "erreur de type" c'est pourquoi, je voudrais examiner cette requête
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de log4j?
Si oui, ajouter des bûcherons pour sql comme ci-dessous.
Si vous utilisez un ORM comme ibatis, vous pouvez ajouter de l'enregistreur comme ci-dessous.
Oui, vous pouvez le faire. Vous pouvez envelopper votre appelable déclaration dans un proxy qui peut remplacer les valeurs réelles lors de l'impression (et de leur montrer le sql), ou à chasser autour pour un pilote qui a un sens toString. javaworld article Il est également p6spy, et d'autres.
Les procédures stockées sont plus difficiles, mais toujours faisable.
Vous ne pouvez pas obtenir le SQL par l'impression de la Déclaration.
Est l'exemple que vous avez posté l'un de l' "parfois", ce qui déclenche l'erreur?
Pourquoi avez-vous affaire à un OracleCallableStatement? Quelle est la partie de l'appel n'est pas la norme CallableStatement?
Statement
interface. Certains pilotes à mettre en œuvre une bonnetoString()
méthode, certains ne le font pas. Oracle n'a toutefois pas.En général, l'utilisation myObject.toString() pour voir ce qu'il imprime. Vous peut ou peut ne pas être en mesure de voir la requête complète bien. Si vous ne pouvez pas l'obtenir pour aller, la première chose que je regarde est l'API documentation(javadoc que l'Oracle de la bibliothèque ou de pilote que vous utilisez)
Je ne suis pas sûr si je comprends bien la question, mais il semble que vous voulez voir ceci:
Il est possible d'utiliser proxy pilote jdbc à un journal de toutes les bases de données jdbc actions.
ce pilote peut imprimer toutes les déclarations avec les valeurs et tous les résultats.
J'ai pensé qu'il pourrait être utile si vous êtes à la recherche si la requête exécutée a de la valeur ou pas
je.e Le "faux" retournée par "CallableStatement.execute()" signifie que l'JDBC déclaration n'ai pas lu toutes les lignes, (donc il n'y a pas de jeu de résultats à lire). C'est ce que vous attendez, que les procédures stockées ne sont pas directement retour des jeux de résultats, ils n'valeurs de retour pour OUT ou INOUT paramètres.