I have a typical crosstab query with static parameters. It works fine with createStatement. I want to use preparestatement to query instead.
String query = "SELECT * FROM crosstab(
'SELECT rowid, a_name, value
FROM test WHERE a_name = ''att2''
OR a_name = ''att3''
ORDER BY 1,2'
) AS ct(row_name text, category_1 text, category_2 text, category_3 text);";
PreparedStatement stat = conn.prepareStatement(query);
ResultSet rs = stat.getResultSet();
stat.executeQuery(query);
rs = stat.getResultSet();
while (rs.next()) {
//TODO
}
But it does not seem to work.
I get a PSQLException - Can't use query methods that take a query string on a PreparedStatement.
Any ideas what I am missing?
Please try:
You have fallen for the confusing type hierarchy of
PreparedStatement extends Statement
:PreparedStatement
has the sameexecute*(String)
methods likeStatement
, but they're not supposed to be used, just use the parameterlessexecute*()
methods ofPreparedStatement
--- you already have given the actual query string to execute usingconn.prepareStatement()
.