首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgres jdbc驱动程序中记录准备好的sql语句

在postgres jdbc驱动程序中记录准备好的sql语句
EN

Stack Overflow用户
提问于 2011-08-26 03:07:41
回答 1查看 5.1K关注 0票数 7

我想在我的java应用程序中记录所有准备好的sql语句。我正在使用标准的postgres jdbc驱动程序org.postgresql.Driver。此驱动程序有一个名为“loglevel”的参数,该参数可以设置为1(信息)或2(调试)。关键是,如果参数设置为1,则几乎不会记录任何内容,如果设置为2,则跟踪太像

代码语言:javascript
复制
...
20:59:05.608 (2)  FE=> Bind(stmt=null,portal=null,$1=<'5'>,$2=<'13'>)
20:59:05.609 (2)  FE=> Describe(portal=null)
20:59:05.609 (2)  FE=> Execute(portal=null,limit=1)  
20:59:05.609 (2)  FE=> Sync
20:59:05.648 (2)  <=BE ParseComplete [null]
20:59:05.649 (2)  <=BE BindComplete [null]
20:59:05.649 (2)  <=BE NoData
20:59:05.649 (2)  <=BE CommandStatus(UPDATE 1)
...

有没有办法只记录语句+参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-26 03:24:44

您很幸运,因为您使用的是PostgreSQL。SQL驱动程序的PreparedStatement实现(至少在8.x或更高版本中)以这种方式覆盖了它的toString(),这样您就可以看到所有参数都填充在正确位置的整个PostgreSQL语句。所以你可以这样做:

代码语言:javascript
复制
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, value1);
preparedStatement.setString(2, value2);
// ...
logger.debug(preparedStatement); // Will show entire SQL with all values.

(其中logger只是你的记录器,例如slf4j/logback或其他什么)

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

https://stackoverflow.com/questions/7195855

复制
相关文章

相似问题

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