java CallableStatement打印过程中的所有参数

时间:2014-05-05 12:46:32

标签: java jdbc

CallableStatement stmt =  getSession().connection().prepareCall(
                "{call CRM_DAO.Search_Customers(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");

setString(1, filter.getFirstname(), stmt);
....
stmt.execute();

我可以以某种方式看到所有输入参数,我可以在SQL中执行此过程而不是手动检查所有partameters吗?

我希望得到类似的内容:

call CRM_DAO.Search_Customers(1, 3, 'test',..

2 个答案:

答案 0 :(得分:1)

我为此目的使用log4jdbc。工作得很好,非常容易配置。如果将其放入并将其用作jdbc驱动程序,它将自动包装大多数符合jdbc的驱动程序。

https://code.google.com/p/log4jdbc/

它可能有点繁琐,但日志级别是可配置的,并分为子类别,以帮助缩小您正在寻找的内容。

答案 1 :(得分:0)

你必须通过“以某种方式查看所有输入参数”来更好地定义你的意思。您最好的选择是使用getXXX对象上的Statement方法,并确切地查看为每个参数添加的值 - 但是,从您提出问题的方式来看,似乎这是正是你想要做的事情。

编辑 根据OP的评论,目标是准确查看正在执行的语句

在JDBC中没有标准的方法。如果您打算将这些“扩展”语句打印到日志中,那么您将不得不求助于JDBC驱动程序提供程序或JEE容器可以使用可能的日志记录/跟踪方法。如果您打算在程序中以String的形式接收这些语句,那么也许您应该按照@ jgitter的建议,下载log4jdbc的源代码,看看他们如何打印语句(我不会如果事实证明他们只是使用getXXX对象上的各种Statement方法,那就不会感到惊讶。