日期:2014-05-20  浏览次数:21031 次

java resultset 不为空但是关闭出错
public ResultSet SQLQuery(String a_SQL)
{
try{
page_con=getConnection();
page_st=page_con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
a_SQL= new String(a_SQL.getBytes("cp850"), "GBK").trim();
page_rs=page_st.executeQuery(a_SQL);
page_rs.close();
}
catch(Exception ex)
{
System.err.println("查询失败:"+ex.getMessage());
  ex.printStackTrace();
}
return page_rs;
}
一执行到page_rs.close();这句 就会出现如下异常
---------- java package ----------
查询失败:null
java.lang.NullPointerException
at com.sybase.jdbc3.tds.TdsResultSet.next(TdsResultSet.java:429)
at com.sybase.jdbc3.tds.TdsResultSet.close(TdsResultSet.java:568)
at com.sybase.jdbc3.jdbc.SybResultSet.markDead(SybResultSet.java:1618)
at com.sybase.jdbc3.jdbc.SybResultSet.close(SybResultSet.java:1686)
at com.sybase.jdbc3.jdbc.SybResultSet.close(SybResultSet.java:213)
at org.gzaic.db.DBAgent.SQLQuery(DBAgent.java:42)
at org.gzaic.db.TestMain.main(TestMain.java:8)

输出完成 (耗时 0 秒) - 正常终止
这个问题我在baidu上搜了好久,无果。
望高手相救,不甚感激,毕业设计相关。
在下是新手,分不多,但必定有多少就给多少

------解决方案--------------------
你得移动下page_rs的指针

Java code

   if(page_rs.next())
      page_rs.close();

------解决方案--------------------
page_rs=page_st.executeQuery(a_SQL); 
因为你返回的 page_rs是为空的。
page_rs.close(); 

把 a_SQL= new String(a_SQL.getBytes("iso8859-1"), "GBK").trim(); 
试试看.

------解决方案--------------------
真的不为空吗?奇怪了。。。
if(page_rs==null)
{
System.out.println("page_rs is null!");
}
------解决方案--------------------
结果集是空的~
你先判断是否为null,再关闭!