问题一
问题描述:在展示微博动态时,需要查询所有微博的内容,并且每次需要根据获取的微博id继续查询相应的评论,此即在“查询中执行查询”。上述操作在eclipse中报错。
问题思考:在读取数据库查询结果的过程中是仍需要保持数据库连接的,读取完毕后需执行resultSet.close()。若没有关闭连接而执行下一条查询,PostgreSQL会强制关闭并发出警告。至此,我们的问题来源已找到,读取查询到的第一条微博并据此查询微博评论时,PostgreSQL会强制关闭查询微博内容的连接,执行查询微博评论的操作,下一次循环是继续读取微博内容,而此时的微博内容读取连接已被强制删除,eclipse会因找不到变量而出错。
问题解决
方法1:将上述两条sql语句整合为一条。 方法2:在查询微博评论时新建数据库连接stmt2,如下:
stmt1 = conn.createStatement();
ResultSet wbcontent = stmt1.executeQuery(sqlA);
stmt2 = conn.createStatement();
ResultSet wbcomment = stmt2.executeQuery(sqlB);