如何查看PreparedStatement SQL字符串?

时间:2013-03-21 16:27:02

标签: java jdbc prepared-statement

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

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

2 个答案:

答案 0 :(得分: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'"Could be that someone has actually implemented this before...

答案 1 :(得分:5)

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