首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中打印语句(CallableStatement)?

如何在Java中打印语句(CallableStatement)?
EN

Stack Overflow用户
提问于 2011-01-11 19:57:58
回答 8查看 29.2K关注 0票数 20

如何打印此OracleCallableStatement?

代码语言:javascript
复制
   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);

我的意思是,我如何知道哪个查询进入数据库,我如何打印该查询?因为有时它会给出像“错误类型”这样的错误,这就是为什么我要看这个查询

EN

回答 8

Stack Overflow用户

发布于 2013-11-21 11:39:17

你在使用log4j吗?

如果是这样的话,添加sql的记录器,如下所示。

代码语言:javascript
复制
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

如果你使用的是一个ORM框架,比如ibatis,你可以添加额外的记录器,如下所示。

代码语言:javascript
复制
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
票数 5
EN

Stack Overflow用户

发布于 2013-11-18 23:55:02

是的,你可以做到。您可以将可调用的语句包装在代理中,以便在打印(并显示sql)时替换实际值,或者四处寻找具有有意义的toString的驱动程序。还有p6spy,还有其他的。存储过程比较难,但仍然可行。

票数 3
EN

Stack Overflow用户

发布于 2011-01-11 20:01:13

您不能通过打印语句来获取SQL。

您发布的示例是触发错误的“有时”之一吗?

为什么你要把这个放到OracleCallableStatement上呢?调用的哪一部分不是标准CallableStatement?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4657349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档