我可以获得PreparedStatement即将执行的完整查询吗?

ufk*_*ufk 9 java mysql prepared-statement

我正在PreparedStatement使用MySQL服务器.

例:

String myQuery = "select id from user where name = ?";
PreparedStatement stmt  = sqlConnection.prepareStatement(myQuery);
stmt.setString(1, "test");
stmt.executeQUery();
ResultSet rs = stmt.getResultSet();
Run Code Online (Sandbox Code Playgroud)

如何收到即将在MySQL服务器上执行的完整SQL查询?

谢谢!

gus*_*afc 10

它不是由JDBC规范的限制,但一些JDBC驱动程序让toString一个的PreparedStatement回报将要运行的查询排序的,和MySQL的连接器/ J恰好有这种行为(或者至少是在几年前所做的那样).

String myQuery = "select id from user where name = ?";
PreparedStatement stmt  = sqlConnection.prepareStatement(myQuery);
stmt.setString(1, "test");
System.out.println(stmt); // May do what you want!
Run Code Online (Sandbox Code Playgroud)