如何查看PreparedStatement的SQL字符串?

13

在创建PreparedStatement时,我们使用'?'字符,然后将其替换为设置的参数。

在设置了这些参数后,我们如何查看最终的SQL字符串呢?


2个回答

11

没有最终的SQL字符串,带占位符版本才是实际发送到服务器的内容。随着您在准备好的语句上执行查询,数据完全分开发送。

您可以记录带有占位符的字符串,然后逐个记录每个数据集。

如果这是您想要的,您的代码可以将它们合并到日志中成为实际的SQL字符串:

String query = "SELECT a FROM b WHERE c = ?";

...

pstmt.setString(1, "asd");
logSQL( query, "asd");

logSQL会记录下"SELECT a FROM b WHERE c = 'asd'"。或许之前已经有人实现过这个功能,详情请见此处


5

最简单的方法(适用于任何JDBC驱动程序)是使用log4jdbc。 它是一个代理,包装了驱动程序,通过组合SQL和其参数创建可读的SQL字符串并将其记录下来,然后将SQL和参数传递给底层驱动程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接