我有一个典型的带静态参数的交叉表查询。它在createStatement
上运行得很好。我想改用preparestatement
来查询。
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
}
但它似乎不起作用。
我得到一个PSQLException
-
无法使用在PreparedStatement
上接受查询字符串的查询方法。
你知道我错过了什么吗
2条答案
按热度按时间fykwrbwg1#
您已经陷入了
PreparedStatement extends Statement
的混乱类型层次结构:PreparedStatement
具有与Statement
相同的execute*(String)
方法,但不应使用它们,只需使用PreparedStatement
的无参数execute*()
方法---您已经使用conn.prepareStatement()
给出了要执行的实际查询字符串。5lwkijsr2#
请尝试: