【发布时间】:2013-03-11 06:50:06
【问题描述】:
当我们创建 PreparedStatement 时,我们使用 '?'然后用设置的参数替换字符。
这些参数设置好后如何查看最终的SQL字符串?
【问题讨论】:
标签: java jdbc prepared-statement
当我们创建 PreparedStatement 时,我们使用 '?'然后用设置的参数替换字符。
这些参数设置好后如何查看最终的SQL字符串?
【问题讨论】:
标签: java jdbc prepared-statement
最简单的方法(适用于任何 JDBC 驱动程序)是使用log4jdbc。它是一个封装驱动程序的代理,通过组合 SQL 及其参数创建可读的 SQL 字符串并记录它,然后将 SQL 和参数传递给底层驱动程序。
【讨论】:
没有最终的 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...
【讨论】: