各位高手:
    我最近在用java写一个小程序(DB用Oracle)时,遇到问题,代码:
Statement st=null;
ResultSet rs1=null;
PreparedStatement pstat1=null;
String result1;
int count1=0;
 
ResultSet rscount1=null;
ResultSet rsid=null;................st=b9121pool.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//用的连接池
    
rsid=st.executeQuery("select SEQ_ID from H_SP_SEQID");
while(rsid.next())
{
   seqid=rsid.getInt("SEQ_ID");
}
try
{
   rsid.close();
}
catch(SQLException se)
{
   logger.error(se);
}
    
rscount1=st.executeQuery("select count(*) as c from shortmsg_base a where .....");//条件有点复杂,涉及3张表
while(rscount1.next())
{
   count1=rscount1.getInt("c");
}
try
{
   rscount1.close();
   System.out.println("8888888888888");
}
catch(SQLException se)
{
   logger.error(se);
}
       
pstat1=b9121pool.prepareStatement("update H_SP_SEQID set SEQ_ID=?");
System.out.println("777777777777777");
rs1=st.executeQuery("select count(*) as c from shortmsg_base a where .....");//条件与rscount1相同
System.out.println("66666666666666");
if (count1>0)
{
  System.out.println("55555555555555");
   while(rs1.next())        《《《《《《《《《《《《《================问题在此!!!
  { System.out.println("44444444444");
     ..................
  }
}
结果能输出888888888888888、77777777777777、6666666666666666666、55555555555555
然后就报错:java.lang.NullPointerException
看样子像是记录集rs1为null?不知有没有老大遇到过?请指教,谢谢!在线急等~

解决方案 »

  1.   

    为什么rs.next()会抛出java.lang.NullPointerException异常?难道是sql有错?但是在pl/sql里同样的sql语句就是能正常运行的啊~
    求各位老大指点~!!!
      

  2.   

    同样的程序,再次运行却又报不同的错误:
    java.sql.SQLException: 关闭的语句: next
    这次连一开始的88888888888888也没有输出!说明前面哪里错了?请高手们指点一二!
      

  3.   

    简单说,你rs都没有next了,你还next当然要出错,你做个判断看看?或者跟踪调试看看其二,你什么都没有关闭,再次运行所以就报java.sql.SQLException: 关闭的语句: next没看代码,纯属猜测。请检查
      

  4.   

    resultset  只能读取一次的。
      

  5.   

    to: nationally(自由鸟)
    我前面几次的ResultSet读过之后都是关掉的啊,最后的rs1之前的应该都已经关掉了,而且同样的程序,我曾经正确运行过的,不知怎么会这样的问题出来!
    郁闷哪~~~
      

  6.   

    曾经正确运行过那就应该是 RS 关闭的问题了 ~~~或者数据库改变了,得到的 RS 为空~~
      

  7.   

    请问各位老大:
    resultset是不是有个数的限制?就是一个Statement只能一定数量的ResultSet?但是我前面的ResultSet已经关闭了啊。ResultSet为什么会自动关闭呢?好多的问题
      

  8.   

    现在又有新的问题:
    程序报错
    java.sql.SQLException: 关闭的语句: getMetaData
    一开始的88888888888888也没有输出!为了防止记录集没有关闭,我已经在try下面添了finally,把st,rs1,pstat1,rscount1都关了