可能重复:
How can I get the SQL of a PreparedStatement?如何查看我的PreparedStatement的外观?
我做一个PreparedStatement(PS),并运行一些了setString(INT一,字符串二)就可以了。 在此之后,我如何看到我的PS终于看起来像什么?
可能重复:
How can I get the SQL of a PreparedStatement?如何查看我的PreparedStatement的外观?
我做一个PreparedStatement(PS),并运行一些了setString(INT一,字符串二)就可以了。 在此之后,我如何看到我的PS终于看起来像什么?
如果我理解你,你会想成才,如:
PreparedStatement pstmt =
connection.prepareStatement("insert into table tab(col) values(?)");
pstmt.setString(1, "my string value");
,然后你想看到这样的字符串:
"insert into table(col) values('my string value')"
难道我得到你的意思吧?
如果是这样,我认为你不能那样做。我认为这个语句是预编译的,没有参数值,而且这些都是分开保存的,所以你可以重复使用具有不同参数的语句。
你可以做什么,是检索参数元数据,如:
ParameterMetaData pmd = pstmt.getParameterMetaData();
然后调用的东西,如:http://stackoverflow.com/questions/的
pmd.getParameterCount();
pmd.getParameterClassName(1);
pmd.getParameterType(1);
是的,我似乎无法做到这一点。在ParameterMetaData和ParameterMetaData的JavaDocs中,我没有看到任何可以给我想要的方法。 – 2012-07-28 07:17:56
你正在使用什么数据库? Oracle,Derby,MySql,...?尝试答案Betoverse提供了一个尝试,只是通过'System.out.println(pstmt)打印语句;' – 2012-07-28 10:06:24
我正在使用MySql – 2012-07-28 22:09:17
可能dupicate 2382532/how-can-i-get-sql-of-a-prepared-statement- – Reimeus 2012-07-26 21:53:28
这取决于驱动程序。见http://stackoverflow.com/questions/2683214/get-query-from-java-sql-preparedstatement – betomontejo 2012-07-26 22:09:06
@Betoverse啊是的,当然。在与Oracle合作多年之后,有时我会忘记一些特定于该供应商的事情,并将其误认为标准。感谢您的输入。 – 2012-07-27 16:19:47