【问题标题】:What is a solution of "Multiple ResultSets were returned by the query"“查询返回了多个结果集”的解决方案是什么
【发布时间】:2012-05-17 22:03:54
【问题描述】:

我得到错误:

ERROR [NewsDAO] findAll(): org.postgresql.util.PSQLException: Multiple ResultSets were returned by the query.

我正在使用 postgresql-8.4-703.jdbc4.jar。

我的代码如下:

private static StringBuilder findAllQuery = new StringBuilder();

    {
    findAllQuery.append("SELECT * FROM news;");
}

    public List<News> findAll() {
    Statement stm = null;
    ResultSet rs = null;

    List<News> results = new ArrayList<News>();
    if (obtainConnection()) {
        try {
            stm = con.createStatement();
            rs = stm.executeQuery(findAllQuery.toString());
            while(rs.next())
                results.add(setInObject(rs));
        } catch (Exception e) {
            logger.error("findAll(): " + e);
        } finally {
            logger.info("Zamknalem");
            closeConnection();
        }
    }
    return results;
}
    public News setInObject(ResultSet rs) throws SQLException {
    News news = new News();
    news.setId(rs.getInt("id"));
    news.setTitle(rs.getString("title"));
    news.setDescription(rs.getString("description"));
    //TODO: timestamp
    news.setDate(rs.getDate("date"));
    User user = new User();
    user.setId(rs.getInt("user_id"));
    news.setUser(user);
    news.setActive(rs.getBoolean("active"));
    return news;
}

我不知道为什么会出现此错误。有什么想法吗?

【问题讨论】:

  • 你能把代码贴在你实际创建/分配findAllQuery的地方吗?

标签: java postgresql resultset


【解决方案1】:

findAllQuery.toString() 中必须有 multiple select statements。

编辑

正如 JB Nizet 指出的那样,您应该尝试从语句中删除分号。 Postgresql JDBC 驱动程序在分号上分割语句,因此它可能发出两条语句。

【讨论】:

  • @TomaszGutkowski:删除查询末尾的分号。
  • Tim Pote 您的评论让我找到了解决问题的方法。问题出在这里: private static StringBuilder findAllQuery = new StringBuilder();
  • 就我而言,最后的分号本身不是问题,而是我在分号后有评论:AND this.that = 'bliggity blag'; -- important comment
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 2021-05-26
  • 1970-01-01
  • 2014-11-30
  • 2013-01-12
  • 2020-05-04
相关资源
最近更新 更多