我该如何查看我的PreparedStatement长什么样子?

5

可能是重复问题:
如何获取PreparedStatement的SQL?

我创建了一个PreparedStatement(PS),并在它上面运行一些setString(int a,String b)。然后,我该如何查看我的PS最终的样子呢?


2
可能是重复的问题:如何获取PreparedStatement的SQL? - Reimeus
这取决于驱动程序。请参见https://dev59.com/H3E85IYBdhLWcg3wpFEa。 - betomontejo
@Betoverse 是的,当然。在与Oracle工作多年后,有时我会忘记一些特定于该供应商的事情,并将它们误认为是标准。感谢您的意见。 - pafau k.
1个回答

4
如果我理解正确,您想要类似这样的东西:
    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();

然后调用类似以下的内容:

    pmd.getParameterCount();
    pmd.getParameterClassName(1);
    pmd.getParameterType(1);

是的,看起来我做不到这个。在 ParameterMetaData 和 ParameterMetaData 的 JavaDocs 中,我没有看到任何可以给我想要的东西的方法。 - sweet dreams
你正在使用哪个数据库?Oracle、Derby、MySql等?尝试使用Betoverse提供的答案,并尝试通过System.out.println(pstmt);打印语句。 - pafau k.

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