Java Crosstab - 准备语句查询

标签 java postgresql pivot-table prepared-statement

我有一个带有静态参数的典型交叉表查询。它适用于 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.

知道我遗漏了什么吗?

最佳答案

您已经被 PreparedStatement extends Statement 的困惑类型层次所迷惑:

PreparedStatement 具有与 Statement 相同的 execute*(String) 方法,但不应该使用它们,只需使用无参数 execute*() PreparedStatement 方法 --- 您已经使用 conn.prepareStatement( )

关于Java Crosstab - 准备语句查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776779/

相关文章:

excel - 如何创建引用excel数据透视表中单元格值的计算字段

php - 如何生成像数据透视表这样的 SQL 查询

python - 数据透视表不使用数据框中的日期时间索引创建

java - Android - 将数据保存到内部存储

java - 如何删除java中第一个和最后一个出现的句子

postgresql - 以编程方式获取对象源

sql - PostgreSQL:不要等到 INSERT 完成

java - 将 HTTP 请求/响应与 RabbitMQ 中的异步消息集成

java - 如何从 GMaven 脚本中加载/查找 JAR 资源?

postgresql - 如何使用 ssh 远程查询 postgresql 中的文本字段?