Java Crosstab – preparedstatement查询

我有一个典型的交叉表查询与静态参数。 它适用于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上获取查询字符串的查询方法。

我缺少什么想法?

你已经陷入了PreparedStatement extends Statement的混乱类型层次结构:

PreparedStatement具有与PreparedStatement相同的execute*(String)方法,但它们不应该被使用,只需使用PreparedStatement的无参数 execute*()方法—您已经使用conn.prepareStatement()给出了实际的查询字符串conn.prepareStatement()

请尝试:

 String query = "..."; PreparedStatement stat = conn.prepareStatement(query); ResultSet rs = stat.executeQuery(); while (rs.next()) { // TODO }