2012-05-09 202 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(); –