我有一个带有静态参数的典型交叉表查询。它适用于 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
-
Can't use query methods that take a query string on a
PreparedStatement
.
知道我遗漏了什么吗?
最佳答案
您已经被 PreparedStatement extends Statement
的困惑类型层次所迷惑:
PreparedStatement
具有与 Statement
相同的 execute*(String)
方法,但不应该使用它们,只需使用无参数 execute*()
PreparedStatement
方法 --- 您已经使用 conn.prepareStatement( )
。
关于Java Crosstab - 准备语句查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776779/