10

静的パラメーターを使用した典型的なクロス集計クエリがあります。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 が発生します。

私が見逃しているアイデアはありますか?

4

2 に答える 2

20

の混乱を招く型階層に陥りましたPreparedStatement extends Statement:

PreparedStatementのような同じexecute*(String)メソッドがありますStatementが、使用することは想定されていません。--- を使用して実行する実際のクエリ文字列を既に指定しています。 execute*()PreparedStatementconn.prepareStatement()

于 2011-10-15T08:52:33.470 に答える
7

してみてください:

String query = "...";
PreparedStatement stat = conn.prepareStatement(query);
ResultSet rs = stat.executeQuery();
while (rs.next()) {
  // TODO
}
于 2011-10-15T08:51:46.020 に答える