Java Crosstab - preparedstatement query

≯℡__Kan透↙ 提交于 2019-12-28 06:44:25

问题


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?


回答1:


You have fallen for the confusing type hierarchy of PreparedStatement extends Statement:

PreparedStatement has the same execute*(String) methods like Statement, but they're not supposed to be used, just use the parameterless execute*() methods of PreparedStatement --- you already have given the actual query string to execute using conn.prepareStatement().




回答2:


Please try:

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


来源:https://stackoverflow.com/questions/7776779/java-crosstab-preparedstatement-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!