如何在绑定后获取准备好的语句查询

时间:2015-04-23 05:50:53

标签: sql logging prepared-statement log4j2

我正在使用像这样的准备好的声明

PreparedStatement pstmt = getConnection().prepareStatement(INSERT_QUERY);
        pstmt.setInt(1,userDetails.getUsersId());

log.debug("SQL for inserting child transactions " + pstmt.toString());

我想在绑定到日志文件后记录确切的SQL语句但是这个东西不起作用。它记录的内容类似于SQLServerPreparedStatement:7。我在互联网上搜索但没有得到满意的答案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以尝试通过在DriverManager上设置PrintWriter来启用JDBC内部日志记录。 Log4j2提供IO Streams module,因此您可以将输出包含在普通日志文件中。示例代码:

PrintWriter logger = IoBuilder.forLogger(DriverManager.class)
        .setLevel(Level.DEBUG)
        .buildPrintWriter();
DriverManager.setLogWriter(logger);

此外,各个JDBC驱动程序通常提供专有的日志记录机制,通常使用系统属性启用。您需要查阅特定驱动程序的文档以获取详细信息。

答案 1 :(得分:-1)

你可以写一个实用功能,它将取代'?'使用绑定变量。