ResultSet 호출 getString NullPointException 문제 해결

2320 단어 exception
Java에서 데이터베이스에 연결할 때 ResultSet에서 getString (또는 다른 유사한 방법) 을 호출하거나 NullPointException 을 던질 때가 있습니다. 이상 정보는 다음과 같습니다.
java.lang.NullPointerException
com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1059)
com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2719)
org.apache.jsp.delete_jsp._jspService(delete_jsp.java:110)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

그러나 debug를 통해 ResultSet의 대상이 비어 있지 않다는 것을 발견하면 이 문제는 비교적 골치 아프고 인터넷에서도 많은 사람들이 질문을 하지만 대부분 문제의 근본 원인을 찾지 못한다.이 문제가 발생한 것은 여러 ResultSet이 하나의 Statement나 PrepareStatement 대상을 사용했기 때문입니다. 예를 들어 다음 코드:
Statement stat = conn.createStatement();
try {
     ResultSet rs = stat.executeQuery("select * from BbsRecord where id=" + id);
      rs.next();
      sid = rs.getInt("sid");
      ResultSet rss = stat.executeQuery("select * from bbsrecord where sid=" + sid);
      rss.last();
      if (rss.getRow() == 1) {
           if (rs.getInt("root") == 0) {  // 
               stat.execute("update bbsrecord set leaf = 1 where id=" + sid);
               stat.execute("delete from bbsrecord where id =" + id);
               if (rs.getInt("leaf") == 0) {
                   delete(conn,id);
               }
           }
        } else {
           stat.execute("delete from bbsrecord where id =" + id);
           if (rs.getInt("leaf") == 0) {
                delete(conn, id);
           }
        }
        rs.close();
        rss.close();
} catch (SQLException e) {
     System.out.println("sql ");
} finally {
     stat.close();
     conn.close(); 
}

 
상기 코드에서 여섯 번째 줄과 세 번째 줄은 같은 Statement를 사용하기 때문에 아홉 번째 줄에서 나온 Null PointerException 이상을 초래하였다

좋은 웹페이지 즐겨찾기