Java “解决方案”是什么;查询“返回了多个结果集”;
我得到一个错误:Java “解决方案”是什么;查询“返回了多个结果集”;,java,postgresql,resultset,Java,Postgresql,Resultset,我得到一个错误: ERROR [NewsDAO] findAll(): org.postgresql.util.PSQLException: Multiple ResultSets were returned by the query. Im使用postgresql-8.4-703.jdbc4.jar 我的代码如下所示: private static StringBuilder findAllQuery = new StringBuilder(); { findAllQuer
ERROR [NewsDAO] findAll(): org.postgresql.util.PSQLException: Multiple ResultSets were returned by the query.
Im使用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;
}
private static StringBuilder findAllQuery=new StringBuilder();
{
追加(“从新闻中选择*”);
}
公共列表findAll(){
语句stm=null;
结果集rs=null;
列表结果=新建ArrayList();
if(获取连接()){
试一试{
stm=con.createStatement();
rs=stm.executeQuery(findAllQuery.toString());
while(rs.next())
结果:添加(setInObject(rs));
}捕获(例外e){
logger.error(“findAll():”+e);
}最后{
logger.info(“Zamnalem”);
closeConnection();
}
}
返回结果;
}
公共新闻setInObject(结果集rs)引发SQLException{
新闻=新新闻();
news.setId(rs.getInt(“id”);
news.setTitle(rs.getString(“title”);
setDescription(rs.getString(“description”);
//TODO:时间戳
news.setDate(rs.getDate(“日期”));
用户=新用户();
user.setId(rs.getInt(“user_id”);
news.setUser(用户);
news.setActive(rs.getBoolean(“active”);
返回消息;
}
我不知道为什么会出现这个错误。有什么想法吗?您必须在findAllQuery.toString()
中找到
编辑
正如JB Nizet所指出的,您应该尝试从语句中删除分号。Postgresql JDBC驱动程序将语句拆分为分号,因此可能会发出两条语句。您能将代码发布到实际创建/分配的位置吗
findAllQuery
?@TomaszGutkowski:删除查询末尾的分号。Tim Pote您的评论让我找到了问题的解决方案。问题就在这里:私有静态StringBuilder findAllQuery=new StringBuilder();在我的例子中,最后一个分号本身并不是问题所在,而是在分号后面有注释:和this.that='bliggity blag';--重要评论