2012-05-09 153 views
3

“多个结果进行查询返回”我得到的错误:什么是溶液

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; 
} 

我不知道为什么我得到这个错误。有任何想法吗?

+2

而查询是...? –

+0

选择*来自新闻; –

+1

你可以发布你实际创建/分配findAllQuery的代码吗? –

回答

11

您必须在findAllQuery.toString()multiple select statements

编辑

由于JB Nizet指出的那样,你应该尝试从语句删除分号。 Postgresql JDBC驱动程序将语句拆分为分号,因此它可能会发出两条语句。

+0

查询:SELECT * FROM news; –

+4

@TomaszGutkowski:在查询结尾处删除分号。 –

+0

蒂姆波特你的评论带我到我的问题的解决方案。问题在这里:private ** static ** StringBuilder findAllQuery = new StringBuilder(); –