【问题标题】:Java Crosstab - preparedstatement queryJava Crosstab - 准备好的语句查询
【发布时间】:2011-10-15 16:52:33
【问题描述】:

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

任何想法我缺少什么?

【问题讨论】:

    标签: java postgresql prepared-statement crosstab


    【解决方案1】:

    您已经迷上了PreparedStatement extends Statement 令人困惑的类型层次结构:

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

    【讨论】:

      【解决方案2】:

      请尝试:

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

      【讨论】:

        猜你喜欢
        • 2021-02-04
        • 2013-08-02
        • 2020-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 2018-09-05
        相关资源
        最近更新 更多