postgresql Java交叉表-预准备语句查询

xoefb8l8  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(134)

我有一个典型的带静态参数的交叉表查询。它在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上接受查询字符串的查询方法。
你知道我错过了什么吗

fykwrbwg

fykwrbwg1#

您已经陷入了PreparedStatement extends Statement的混乱类型层次结构:
PreparedStatement具有与Statement相同的execute*(String)方法,但不应使用它们,只需使用PreparedStatement无参数execute*()方法---您已经使用conn.prepareStatement()给出了要执行的实际查询字符串。

5lwkijsr

5lwkijsr2#

请尝试:

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

相关问题