首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

为什么老报 : 获取栏目出错:java.sql.SQLException: 结果集已耗尽

2011-12-11 
大侠们,帮帮我吧!这几天快郁闷死了!数据操作通用类里有个方法public ResultSet executeQuery(String sql)

大侠们,帮帮我吧!这几天快郁闷死了!
数据操作通用类里有个方法
public ResultSet executeQuery(String sql) throws SQLException, ClassNotFoundException
  {
  String strDriver="oracle.jdbc.driver.OracleDriver";
  String strConn="jdbc:oracle:thin:@127.0.0.1:1521:test";
  String dbUser="system";
  String dbPwd="123456";
  Connection connSet = null;
  ResultSet rsSet=null;
  Statement stmtSet=null;
  rs=null;
  try
  {
  Class.forName(strDriver);  
  connSet=DriverManager.getConnection(strConn,dbUser,dbPwd);
  stmtSet=connSet.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  rsSet=stmtSet.executeQuery(sql);
   
  }
  catch(SQLException ex)
  {
  System.err.println("sql_data.executeQuery:"+ex.getMessage());
  stmtSet.close();
  stmtSet=null;
  rsSet.close();
  rsSet=null;
  connSet.close();
  connSet=null;
  }
  return rsSet;  
  }

JSP里调用
  String nlTitle="";
String nlId="";
String TempCataStr="";
Fun_DB_WEB dbfun=new Fun_DB_WEB();
rs=dbfun.executeQuery("select new_class_title,new_class_id from news_class where new_class_isdel=0 order by new_class_id");
try{
while (rs.next())
{
nlTitle=rs.getString("new_class_title");
nlId=rs.getString("new_class_id");
TempCataStr = TempCataStr+"<img src='images/left_img/join.gif'><a href=newclass.jsp?RootId="+nlId+">"+nlTitle+"</a><br>";
}
System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+rs.getString("new_class_title"));

}
catch(SQLException ex)
{

System.err.println("获取栏目出错:"+ex);
}
为什么老报 : 获取栏目出错:java.sql.SQLException: 结果集已耗尽
大侠们帮我看看吧,分不够,再加!

[解决办法]
while(rs.next()) 退出后,结果集游标已到达末尾,你还调用
rs.getString("new_class_title"),就会发生异常。
[解决办法]
System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+rs.getString("new_class_title")); 

这一句不对


还有 你没有关闭RS,CONN

也有问题
[解决办法]
你最后没有关闭rs呀,你再仔细看看,打开了rs肯定要关闭的呀,不关闭应该会用尽的呀
[解决办法]
while (rs.next()) 

nlTitle=rs.getString("new_class_title"); 
nlId=rs.getString("new_class_id"); 
TempCataStr = TempCataStr+" <img src='images/left_img/join.gif'> <a href=newclass.jsp?RootId="+nlId+"> "+nlTitle+" </a> <br> "; 
} //位置不对吧??
System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+rs.getString("new_class_title")); 
//}是不是应该放在这里呢?,不要两次都取同一个字段,直接用nlTitle就可以了



[解决办法]
晚来一步
[解决办法]
while (rs.next())


{
nlTitle=rs.getString("new_class_title");
nlId=rs.getString("new_class_id");
TempCataStr = TempCataStr+" <img src='images/left_img/join.gif'> <a href=newclass.jsp?RootId="+nlId+"> "+nlTitle+" </a> <br> ";
} //位置不对吧??
System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+rs.getString("new_class_title"));
//}是不是应该放在这里呢?,不要两次都取同一个字段,直接用nlTitle就可以了 


[解决办法]

Java code
  try{    while (rs.next()) {       nlTitle=rs.getString("new_class_title");       nlId=rs.getString("new_class_id");       TempCataStr = TempCataStr+" <img src='images/left_img/join.gif'> <a href=newclass.jsp?        RootId="+nlId+"> "+nlTitle+" </a> <br> ";       System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+nlTitle;     }  }   catch(SQLException ex) {     System.err.println("获取栏目出错:"+ex);   }
[解决办法]
问题已经指出来了。

代码很不规范,开的连接不关,后果很严重
[解决办法]
为什么老报 : 获取栏目出错:java.sql.SQLException: 结果集已耗尽
 conn连接没有关闭,你Fun_DB_WEB dbfun=new Fun_DB_WEB(); 
建立一个连接,当然会耗尽结果集了,建议代码写的规范些
如:
JSP里调用 
String nlTitle=""; 
String nlId=""; 
String TempCataStr=""; 
Fun_DB_WEB dbfun=new Fun_DB_WEB(); 
rs=dbfun.executeQuery("select new_class_title,new_class_id from news_class where new_class_isdel=0 order by new_class_id"); 
try{ 
while (rs.next()) 

nlTitle=rs.getString("new_class_title"); 
nlId=rs.getString("new_class_id"); 
TempCataStr = TempCataStr+" <img src='images/left_img/join.gif'> <a href=newclass.jsp?RootId="+nlId+"> "+nlTitle+" </a> <br> "; 

System.err.println("得到栏目:"+nlTitle+"ID:"+nlId+"数据库标题:"+rs.getString("new_class_title")); 


catch(SQLException ex) 


System.err.println("获取栏目出错:"+ex); 

//增加如下内容,具体的conn以程序中的对应
finally{
 
try{
if(rs!=null) {
rs.close();
}
if(conn!=null){
conn.close();
}
}
catch (Exception e1) {
e1.printStackTrace();
}
}

热点排行